2

Symfony 2 正在显示缓存头,我想知道如何隐藏这些

例子

HTTP/1.0 200 OK Cache-Control: no-cache Content-Type: text/html Date: Fri, 18 Jan 2013 19:07:08 GMT HTTP/1.0 200 OK Cache-Control: no-cache Date: Fri, 18 Jan 2013 19:07:08 GMT X-Debug-Token: 50f99d5cba4da

我在我的代码中使用它

return new Response($this->renderView('Shout/view/default.html.twig'));

被调用

$httpKernel = $this->container->get('http_kernel');
        $response = new Response;
        $response->SetContent($httpKernel->forward('MyBundle:Module/'.$module.'/'.$module.':index'));
        $response->headers->set('Content-Type', 'text/html');
        return $response;

在树枝扩展中

4

3 回答 3

6

添加 ->getContent() 以结束。

http://api.symfony.com/2.0/Symfony/Component/HttpFoundation/Response.html

    $response = $this->forward("MyBundle:Module:$module", array(
            'customer_id'  => $customer_id
    ))->getContent();

    return $response; 
于 2013-09-17T16:04:06.063 回答
2

标头是HttpFoundation中Response 类的一部分。您可以使用 headers 属性来管理它们,这与您在代码中使用的属性相同。该属性是ResponseHaderBag 类的一个实例,它具有删除功能。

您要删除的标头名为“Cache-Control”,因此如果您编写:

$response->headers->remove('Cache-Control');

它将删除该标题。但是如果你检查 Response 的来源,你会发现它的一些功能依赖于这个 header,所以我不确定删除它是否真的是一个好主意。

默认情况下,此标头没有任何错误,只是返回“no-cache”,这意味着浏览器不会缓存您的页面。但是您将无法缓存没有此标头的页面。

如果您的目标是自己手动发送缓存控制标头,请考虑使用Symfony2 的内置功能

于 2013-01-18T19:39:14.497 回答
1

对于正在寻找答案的每个人,我继续上面的帖子并尝试使用 twig 的渲染功能,但使用我的自定义模块

这是我得到的,它工作正常:)

return $this->container->get('templating.helper.actions')->render('MyBundle:Module/'.$module.'/'.$module.':index', $attributes, $options);
于 2013-01-19T14:06:09.657 回答