Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/443.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/3/html/75.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
使用querystring缓存css、图像和javascript文件_Javascript_Html_Http_Caching - Fatal编程技术网

使用querystring缓存css、图像和javascript文件

使用querystring缓存css、图像和javascript文件,javascript,html,http,caching,Javascript,Html,Http,Caching,为了强制浏览器重新加载新版本的css或javascript文件,我们在文件中添加了一个版本查询字符串(例如script.js?version=1) 它工作得很好,但是我注意到浏览器在每次刷新时都会下载文件,第一次下载后文件不会被缓存 我在网上查了一下,读了这本书《高性能网站:前端工程师的基本知识》,他们说应该更改文件名,以确保它能被缓存 我的问题是添加查询字符串是否会阻止浏览器缓存文件,还是我做错了什么 下面是js文件响应头 Accept-Ranges:bytes Cache-Control:m

为了强制浏览器重新加载新版本的css或javascript文件,我们在文件中添加了一个版本查询字符串(例如script.js?version=1)

它工作得很好,但是我注意到浏览器在每次刷新时都会下载文件,第一次下载后文件不会被缓存

我在网上查了一下,读了这本书《高性能网站:前端工程师的基本知识》,他们说应该更改文件名,以确保它能被缓存

我的问题是添加查询字符串是否会阻止浏览器缓存文件,还是我做错了什么

下面是js文件响应头

Accept-Ranges:bytes
Cache-Control:max-age=315360000
Content-Length:516
Content-Type:application/javascript
Date:Fri, 12 Jun 2015 04:57:51 GMT
ETag:"204"
Expires:Mon, 09 Jun 2025 04:57:51 GMT
Last-Modified:Thu, 11 Jun 2015 07:34:53 GMT
Server:Apache

浏览器仍然可以重载此设置(在IE中:每次我访问页面时,在chrome中:您也有类似的选项)。谢谢@RoyiNamir,您的意思是如果文件有版本查询字符串,浏览器将保留缓存副本吗?否。如果文件有版本QS(甚至更改或降低了大写字母)-它仍会再次从服务器发出请求。我只是说,即使你一次又一次地请求同一个项目,而且它是同一个项目,即使缓存了,你仍然可以让chrome在每次刷新请求时都请求它。(通过禁用浏览器中的缓存)@RoyiNamir,很明显浏览器会要求新版本,但在我的情况下,浏览器不会缓存新版本,它会在每次页面刷新时不断要求相同的版本。浏览器仍然可以重载此设置(在IE中:每次访问页面时,在chrome中:您也有类似的选项).Thank@RoyiNamir,您的意思是默认行为是,如果文件具有版本查询字符串,浏览器将保留缓存副本吗?否。如果文件具有版本QS(甚至更改或降低了大写字母)-它仍将再次从服务器请求。我只是说,即使你一次又一次地请求同一个项目,而且它是同一个项目,即使缓存了,你仍然可以让chrome在每次刷新请求时都请求它。(通过禁用浏览器中的缓存)@RoyiNamir,很明显浏览器会要求新版本,但在我的情况下,浏览器不会缓存新版本,它会在每次页面刷新时不断要求相同的版本。浏览器仍然可以重载此设置(在IE中:每次访问页面时,在chrome中:您也有类似的选项).Thank@RoyiNamir,您的意思是默认行为是,如果文件具有版本查询字符串,浏览器将保留缓存副本吗?否。如果文件具有版本QS(甚至更改或降低了大写字母)-它仍将再次从服务器请求。我只是说,即使你一次又一次地请求同一个项目,而且它是同一个项目,即使缓存了,你仍然可以让chrome在每次刷新请求时都请求它。(通过从浏览器禁用缓存)@RoyiNamir,很明显浏览器会要求新版本,但在我的情况下,浏览器不会缓存新版本,它会在每次页面刷新时不断要求相同的版本。