Html Firefox不会立即反映网站的新变化,但Chrome会吗?
我注意到Firefox没有立即将任何设计更改(HTML/CSS/图像)反映到网站上。必须至少刷新一次才能看到更改。因此,基本上,当用户访问网站时,他/她会看到一个混乱的页面,必须刷新一次才能看到新的设计。Chrome没有这个问题。如何使用HTML/JavaScript或JavaScript库修复此问题 我当前的HTML元代码Html Firefox不会立即反映网站的新变化,但Chrome会吗?,html,firefox,cross-browser,browser-cache,Html,Firefox,Cross Browser,Browser Cache,我注意到Firefox没有立即将任何设计更改(HTML/CSS/图像)反映到网站上。必须至少刷新一次才能看到更改。因此,基本上,当用户访问网站时,他/她会看到一个混乱的页面,必须刷新一次才能看到新的设计。Chrome没有这个问题。如何使用HTML/JavaScript或JavaScript库修复此问题 我当前的HTML元代码 <HEAD> <META http-equiv="Cache-Control" content="no-cache"> <META http-
<HEAD>
<META http-equiv="Cache-Control" content="no-cache">
<META http-equiv="Pragma" content="no-cache">
<META http-equiv="Expires" content="0">
.....
.....
一种处理缓存资源的简单方法是在HTML中该资源的URL末尾添加一个随机参数
例如:
<img src='mygif.gif'/> <!-- this is cached -->
如果已经缓存了mygif.gif,浏览器就不会再下载了-因此,要在mygif.gif被更改后强制下载,请修改URL,如下所示:
<img src='mygif.gif?version=1.1'/>
<!-- this is not cached as it appears to be a different file -->
对于浏览器,此文件是不同的文件,必须下载,但是对于服务器,它是相同的文件
为了便于维护,最好与随机参数保持一致,因此我通常使用类似于?version=1
,因此如果需要再次执行此操作,您可以在项目上执行字符串替换并增加版本号
关于这项技术的另一个很好的解释可以在这里找到:
但是,重要的是要记住,你不能强迫浏览器清除其缓存,你只能采用这种技术,浏览器将始终决定缓存什么和下载什么,甚至cache和expires头也只是一个“提示”。我发现下面的帖子对于防止所有类型的浏览器都缓存页面非常有帮助: 除了元标记之外,我还使用日期戳或唯一代码,如下所示:
(顺便说一句,我遇到了相反的问题-在Firefox中工作,但不是Chrome。)您使用的是什么版本的Firefox和什么平台?简单的方法是更改您的html并将随机参数添加到css和图像URL中,让Firefox误以为它们是不同的资源,必须再次下载。有很多破坏缓存的技术,但请记住,你不能命令浏览器删除它的缓存。@drew\w这是Firefox 26。0@jammypeach大多数主要网站都有这个问题。一定有办法解决这个问题。“不过我不知道怎么做。”甘道夫说,我所概述的技巧会奏效。实现起来相当简单——如果您更改了资源的名称,那么Firefox或任何其他浏览器都会认为它们是“新的”,并正确下载它们。因此,src属性为“mygif.gif”的img标记将变成“mygif.gif?version=1”。对于浏览器来说,这看起来像是不同的资源,但对于服务器来说,它是同一个文件。见: