我有一个应用程序,其中一些静态javascript文件正在通过PHP生成,以允许配置选项更改静态文件(路径如:mystaticfile.js.php
)。一切工作正常除了我似乎无法让缓存设置工作,这些资源正在重新加载每页加载。PHP文件上的高速缓存头不起作用
的PHP文件使用以下标题,以尝试设置缓存设置:
$expires= 60 * 60 * 24 * 60; //cache for 60 days
header('Pragma: public');
header('Cache-Control: max-age=' . $expires);
header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT');
header("content-type: application/x-javascript");
然而,当文件被送达,他们展示标题是这样的:
HTTP/1.1 200 OK
Date: Sun, 06 Nov 2016 19:18:00 GMT
Server: Apache/2.2.15 (CentOS)
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 744
Keep-Alive: timeout=15, max=95
Connection: Keep-Alive
Content-Type: application/x-javascript
我首先想到的是,它可能是因为Apache的ExpiresActive
标志设置为开启,但我没有看到为PHP文件设置的任何ExpiresByType
规则。
在线阅读这听起来像ETag
问题可能是问题,但我已经添加了
Header unset Pragma
FileETag None
Header unset ETag
到http.conf文件(并重新启动该服务),仍然没有骰子。
有什么想法?
怎么样使他们* .js文件浏览器可能会缓存一些 – nogad
@nogad它不应该有任何区别。头文件正在设置,浏览器将它们识别为JS文件。问题是浏览器正在接收指令,尽管头文件是由php设置的,但不能缓存PHP –
您可以尝试添加一些随机头文件('header('Foo:bar');'),首先确保您的头文件是应用? –