Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 缓存页面资产_Php_Javascript_Css_.htaccess_User Interface - Fatal编程技术网

Php 缓存页面资产

Php 缓存页面资产,php,javascript,css,.htaccess,user-interface,Php,Javascript,Css,.htaccess,User Interface,为了减少对UI资产(JS/CSS)的HTTP请求,我编写了一个PHP脚本来组合这些文件,并以“assets/basic,login,jquery-UI-10.CSS”的形式提供这些文件,这很好,但我决定将其放远一点,让浏览器缓存这些资产组合器(我称之为资产组合器)通过在PHP脚本中添加expire头。当然,我在这里使用htacess RewriteRule功能来引用这个脚本assets.php?files=basic,login,jquery ui&type=css&version=10,使它看

为了减少对UI资产(JS/CSS)的HTTP请求,我编写了一个PHP脚本来组合这些文件,并以“assets/basic,login,jquery-UI-10.CSS”的形式提供这些文件,这很好,但我决定将其放远一点,让浏览器缓存这些资产组合器(我称之为资产组合器)通过在PHP脚本中添加expire头。当然,我在这里使用htacess RewriteRule功能来引用这个脚本assets.php?files=basic,login,jquery ui&type=css&version=10,使它看起来像一个css文件,以便浏览器缓存它(这样看起来很好:)。我还使用“version”参数强制浏览器更新文件,但这不会发生!!,我已添加这些头信息以缓存文件:

    header("HTTP/1.1 304 Not Modified");
    header("Expires: Sat, 1 Jun 2015 12:00:00 GMT");
    header("Cache-Control: must-revalidate");
但是,当我尝试更改上面URL字符串中的version参数时,它不会下载新的文件内容,尽管浏览器的文件名已更改>

我在这里做错了什么,如何强制浏览器重新下载具有不同名称(但仍发送上述标题)的新文件>


提前谢谢

你不能。“未修改”的全部意义在于,它告诉浏览器该文档与上一版本相同,并且不应下载该文档


好的,如果自请求修改后,您应该只发送它作为对请求的响应。

正如昆廷所说,您必须只发送304响应作为对If-Modified-Since或If-None匹配请求的响应。通过发送304响应,您告诉浏览器使用缓存副本,即使它没有缓存副本

实际上,使用304响应实际上可能无法达到提高性能的目的,通常最好忽略条件请求,使用内容和新缓存指令进行200响应

如果希望缓存内容,则发送一个max age和一个Expires头(Expires头仅适用于HTTP/1.0客户端-所有现代浏览器都实现了HTTP1/1-即使您明确告诉它们使用HTTP/1.0)

e、 g

header("Expires: Sat, 1 Jun 2015 12:00:00 GMT");
header("Cache-Control: max-age=94608000,must-revalidate");