PHP删除HTTP标头

Bar*_*lom 9 php http-headers

我认为Apache会将这些HTTP标头添加到PHP脚本生成的所有响应中:

Expires:   Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control:  no-store, no-cache, must-revalidate, post-check=0, pre-check=0

这适用于实际的动态页面,但我有一些页面,虽然由PHP生成,但大部分是静态的,我希望浏览器缓存它们.

PHP中是否有一种方法可以从响应中删除这些标题,从而激活浏览器的默认缓存规则,如果没有,是否有任何值可以将它们设置为等同于它们不存在?

我宁愿不设置自己的值,因为我希望浏览器使用与Apache本身提供的静态资源相同的缓存规则(不使用mod_cache).

Myl*_*les 7

对于这些特定文件,您可以添加标头()调用,以不同方式设置这些标头.即.header("Expires: " . $currentDatePlus10);

header("Cache-Control: max-age=3600, must-revalidate")
Run Code Online (Sandbox Code Playgroud)

  • "缓存很容易;到期很难" (4认同)

Vol*_*erK 3

首先,我会检查它是否确实不是设置这些标头的 php 脚本之一。

register_shutdown_function('foo');
echo "test";

function foo() {
  flush();
  $c = "headers_list: \n  " . join("\n  ", headers_list());

  if ( function_exists('apache_response_headers') ) {
    $c .= "\napache_response_headers:";
    foreach( apache_response_headers() as $k=>$v) {
      $c.= "\n  $k=$v";
    }
  }
  $c .= "\n\n";
  echo '<pre>', $c, '</pre>';
}
Run Code Online (Sandbox Code Playgroud)

这会在您的服务器上打印一些“可用”的内容吗?

  • 实际上,将 session.cache_limit 设置为“none”(未记录的值)解决了这个问题。请参阅http://stackoverflow.com/questions/681115/cache-control-header-modified-by-php-session (2认同)
  • 根据文档,“''”(空)显然是与“session_cache_limiter”一起使用的正确值。 (2认同)