Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/87.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
Html HTTP头-硬刷新JavaScript/CSS_Html_Http_Caching - Fatal编程技术网

Html HTTP头-硬刷新JavaScript/CSS

Html HTTP头-硬刷新JavaScript/CSS,html,http,caching,Html,Http,Caching,我最近在我的站点中添加了HTTP头,以便在每次遇到给定的JS/CSS URL时通知浏览器与服务器进行检查。我已经测试过了,效果非常好;所有浏览器现在都会发出有条件的GET请求 但问题是——人们仍然缓存旧的头文件;标题或多或少地告诉浏览器“永远缓存这个;不要麻烦请求更新!”。这可以通过硬刷新来解决。我不想在我们推出代码后,为了在任何有问题的页面上点击F5而不得不与每个人交流 是否有任何HTTP头/HTML元标记可以放在HTML文档本身上,表示“浏览器,忽略JS/CSS文件上的头,并下载此页面上所有

我最近在我的站点中添加了HTTP头,以便在每次遇到给定的JS/CSS URL时通知浏览器与服务器进行检查。我已经测试过了,效果非常好;所有浏览器现在都会发出有条件的
GET
请求

但问题是——人们仍然缓存旧的头文件;标题或多或少地告诉浏览器“永远缓存这个;不要麻烦请求更新!”。这可以通过硬刷新来解决。我不想在我们推出代码后,为了在任何有问题的页面上点击F5而不得不与每个人交流

是否有任何HTTP头/HTML元标记可以放在HTML文档本身上,表示“浏览器,忽略JS/CSS文件上的头,并下载此页面上所有包含文件的最新版本”

随着越来越多的人清除缓存或学会自己刷新,这个问题最终会自行解决。但是,我宁愿现在就修。然后在一个月左右的时间里,我将删除HTML级别的头文件,以获得我想要的缓存——基于每个资源


编辑:我不想重命名资源或添加查询参数。这就是我们过去使用的(?v=18,v=19,等等),每次我们更新资源时增加这个数字是一件很麻烦的事。即使以编程的方式来做也不是理想的解决方案;尤其是现在我们的服务器配置正确了。在HTTP级别执行此操作更有意义,因此无论您如何访问它,它都可以工作—包括在页面上、直接从地址栏或其他方式进行访问。

在脚本源上向传递一个参数,这将强制重新加载脚本。。。事实上,你可以按版本或类似的方式来做

这会起作用,其他用户看不见。。。当你觉得时间已经够长的时候,回到过去的方式。但是,如果您想强制用户刷新,这将起作用

此方法用于防止某些框架缓存网页。如果你成功了,请告诉我


--这里有一个链接指向css的概念(应该也适用于js)--最大的区别是你不想让它永远缓存,所以不要使用时间戳,使用我上面的样式:)享受吧

基本上,唯一的方法是让浏览器不使用缓存的URL

一种方法是在URL的末尾使用缓存破坏伪参数

some name.css?q=1

这将迫使浏览器重新加载该文件(因为该URL不在缓存中),而下载的文件将不会被缓存,因为您的新标题但是:您可能需要无限期地使用这个新名称,因为您不能保证一旦您再次取消伪参数,缓存版本仍然可以使用

另一种方法是完全重命名文件


my new name.css

也许可以更改样式表的名称,然后更改HTML以加载另一个表?值得一提的是,您可以保留“永久”缓存头,并在需要更改时保持这样的文件名版本。@rambocoder:是的,应该提到这一点。这就是版本控制通常采用这种方式的原因(可以指定并将加载新版本;如果需要,仍然可以指定旧版本)。