You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在public/marketing控制器层面设置Cache-Control响应头?

Hey there! Let's work through how to set that specific Cache-Control header directly in your public/marketing controller. Since you didn't mention which framework you're using, I'll cover the most common scenarios—these should get you sorted:

1. Laravel Framework

If you're using Laravel, you have two straightforward options:

  • Per-method header setup: Use the response() helper to attach the header when returning your view or data:
public function marketingPage()
{
    // Your business logic here (e.g., fetching marketing content)
    $marketingContent = // ...

    return response()->view('marketing.page', compact('marketingContent'))
        ->header('Cache-Control', 'max-age=180, public, must-revalidate');
}
  • Controller-wide header setup: If you want this header applied to every method in the controller, add a custom middleware in the constructor:
public function __construct()
{
    $this->middleware(function ($request, $next) {
        $response = $next($request);
        return $response->header('Cache-Control', 'max-age=180, public, must-revalidate');
    });
}
2. Symfony Framework

For Symfony projects, here are your go-to approaches:

  • Manual response header: Create a Response object explicitly and set the header:
use Symfony\Component\HttpFoundation\Response;

public function marketingAction()
{
    // Fetch or generate your marketing content
    $content = // ...

    $response = new Response($content);
    $response->headers->set('Cache-Control', 'max-age=180, public, must-revalidate');

    return $response;
}
  • Annotation shortcut: If you use Symfony's attribute-based routing, you can use the #[Cache] attribute for cleaner code:
use Symfony\Component\HttpKernel\Attribute\Cache;

#[Cache(maxage: 180, public: true, mustRevalidate: true)]
public function marketingAction()
{
    // Your controller logic here
}
3. Native PHP (No Framework)

If you're working with a custom, framework-less controller, just make sure to set the header before any output is sent:

class MarketingController
{
    public function renderPage()
    {
        // Critical: Set headers BEFORE echoing any content
        header('Cache-Control: max-age=180, public, must-revalidate');

        // Output your marketing page content
        echo "<html><body>Your marketing content here</body></html>";
    }
}
Quick Important Notes
  • Always set headers before any output (echo, print, raw HTML, etc.). If content is sent first, PHP will either ignore the header or throw an error.
  • The must-revalidate directive means clients must check with your server after the cache expires to confirm the resource is still valid. For this to work properly, you might want to add ETag or Last-Modified headers to your response too—this helps the server quickly validate if the resource has changed.

内容的提问来源于stack exchange,提问作者Tom Rossi

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.25 08:11:23