我遇到了一个问题(在不同的主机上),我无法真正更改主机设置,所以我正在寻找PHP解决方案。
当我向浏览器发送响应时(Symfony的HttpFoundation \ Response),一些标题是重复的,它们会自相矛盾。比浏览器不会缓存它们。
PHP代码
$response = new Response(
$html,
200,
array(
"content-type" => "text/html; charset=UTF-8",
)
);
$response->setCache(array(
'last_modified' => $page->getEditedAt(),
'max_age' => $staticCache,
's_maxage' => $staticCache,
'private' => false,
'public' => true,
));
浏览器中的部分标题
缓存控制:max-age = 1800,public,s-maxage = 1800
Cache-Control:no-store,no-cache,must-revalidate,post-check = 0,pre-check = 0
日期:2013年10月1日星期二15:08:39 GMT
Expires:Thu,1981年11月19日08:52:00 GMT
杂注:无缓存
但我的页面应该是公开的并且可以缓存。其余标题设置在哪里以及如何将其关闭?
答案 0 :(得分:0)
PHP正在覆盖您的缓存设置,“过期”日期非常具体,并包含在PHP source code中。根据{{3}}堆栈溢出答案,这是开发人员的生日。
您可以通过更改php.ini中的this来关闭此功能。 session.cache-limiter setting页面提供了有关可在此处设置的值的更多信息。尝试将值设置为public或nothing,然后再次测试。
你可以看到session.cache_limiter设置的当前值是一个小的测试页面,它回显了值:
<?php
echo(ini_get('session.cache_limiter'));
您说您正在寻找PHP解决方案,因为您无法编辑主机设置。您可以使用session_cache_limiter function函数更改代码中的值。