【问题标题】:When Chrome clears disk cache?Chrome 什么时候清除磁盘缓存?
【发布时间】:2019-07-26 14:20:11
【问题描述】:

我有一个网站在主页上提供listener.js。我想用一些额外的代码更新这个 javascript 文件。但是浏览器(尤其是 chrome)有内存和磁盘缓存。当然还有 HTTP 缓存。我尝试了一些关于那个状态的东西。我只试过F5,从内存缓存加载的文件。然后我杀死了 chrome 并再次打开了网站,从磁盘缓存加载了 javascript 文件。所以我有两个问题;

  1. chrome 什么时候清除磁盘缓存?
  2. 如何告诉我的访问者不要使用任何缓存并从我的服务器获取新的 javascript 文件?

更新:

  1. 我可以使用no-cache Http 标头执行此操作吗?

【问题讨论】:

  • 在chrome中开发时,可以F12禁用缓存,切换到“网络”,选择“禁用缓存”。对于产品,请在js文件后添加一个随机数。例如“app.js?10101”。

标签: javascript google-chrome caching browser-cache


【解决方案1】:

删除称为缓存破坏的临时缓存文件。这很有用,因为浏览器不必再次下载这些文件。

如果导致问题,开发人员可以强制浏览器下载新文件。这是通过重命名文件来执行的,但有更好的方法

src="js/listener.js" => src="js/listener.js?v=2"

更新:

或者像=> ?v=c298c7f8233d这样的哈希值比?v=2好(Tech Guy评论)

(学分:30 秒)

【讨论】:

  • 哈希(like this => ?v=c298c7f8233d)优于(?v=2)
  • 为什么要使用哈希? v=2 显然更不靠谱
  • 是的,但不是给你看的,是给浏览器的。到浏览器v=2v=timbuktu都一样。
  • html类型文件怎么做
【解决方案2】:

除非选中此选项,否则 Chrome 不会自动清除磁盘缓存

Privacy settings > Content settings > Keep local data only until you quit browser

在这种情况下,它会在关闭浏览器时删除缓存。

您通常会通过散列您的文件名来阻止客户端将文件保存在缓存中 每个构建,这是最常见的缓存清除技术。这意味着在每个版本中,您都会有一个新的文件名,而旧的缓存文件将无关紧要。比如

大多数构建工具(如 Webpack)都具有可以打开的缓存清除功能。

您根本不想阻止用户进行缓存,因为缓存非常有用,可以防止重复下载。您只想在构建新版本时阻止下载。

【讨论】:

    【解决方案3】:

    这个解决方案对我有用。

    let randomNum = Math.round(Math.random() * 10000);
    src = "js/listener.js?" + randomNum;
    

    每次都会产生一个随机数,它会被当作一个新的请求,不会被缓存。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-20
      • 1970-01-01
      • 2017-11-19
      • 2023-03-13
      • 2016-01-29
      • 1970-01-01
      • 2012-03-22
      • 2016-06-25
      相关资源
      最近更新 更多