2016-11-06 53 views
1

我有一个应用程序,其中一些静态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文件(并重新启动该服务),仍然没有骰子。

有什么想法?

+0

怎么样使他们* .js文件浏览器可能会缓存一些 – nogad

+0

@nogad它不应该有任何区别。头文件正在设置,浏览器将它们识别为JS文件。问题是浏览器正在接收指令,尽管头文件是由php设置的,但不能缓存PHP –

+0

您可以尝试添加一些随机头文件('header('Foo:bar');'),首先确保您的头文件是应用? –

回答