为什么Firefox有时会缓存我的CSS和Javascript代码,即使它已经改变了?

Joh*_*ith 6 html css browser caching assets

在我的产品网站上,Firefox有时会"检测不到"我的CSS和Javascript代码中的更改.而是它加载旧版本,所以我似乎需要清除缓存.在这种情况下,我该怎么办?这与最新的Firefox(撰写本文时为16.0.1)有关.

编辑!

我忘了说localhost css文件的错误.我的意思是,这是一个旧的js文件,我更新它,上传它,并在产品服务器上firefox认为它是localhost文件.我包含文件的方式:

<link rel="stylesheet" href="/xyz.css" type="text/css" />
Run Code Online (Sandbox Code Playgroud)

jan*_*267 10

如果您使用的是服务器端语言,则可以使用技巧.您可以在.css/.js之后追加一个字符串.以PHP为例:

<link rel="stylesheet" type="text/css" href="/style.css?t=<?= time(); ?>" />
Run Code Online (Sandbox Code Playgroud)

它会更改每个页面重新加载.

看看这篇关于缓存清除的文章.

  • 不要使用当前时间.如果可以,请使用文件的修改时间或(更好)使用其内容的md5哈希值.这样,只要内容没有改变(这正是你想要的),浏览器仍然可以使用缓存版本. (3认同)
  • 这个(Cache-busting)是迄今为止最好的方法! (2认同)
  • 哦,是的!它有效...但在生产中可以加快页面加载速度 (2认同)
  • 没错,我只在生产中应用了版本号,但dev-enviro是必须的:) (2认同)
  • 如果从服务器中抽出时间导致页面加载问题,请获取新主机.如果您有一个头文件并且记得这么做,那么版本号很棒. (2认同)

Jro*_*rod 9

您可以使用一种名为"缓存清除"的技术,在该技术中,您可以将查询字符串附加到对css/js文件的调用中.然后,每当更新css/js时,都会更新查询字符串.

例:

<link rel="stylesheet" type="text/css" href="/styles.css?ver=1" />
Run Code Online (Sandbox Code Playgroud)