【问题标题】:New content not visible because browser cache由于浏览器缓存,新内容不可见
【发布时间】:2015-07-18 02:30:17
【问题描述】:

我已经用一些新内容更新了我的网站。 我与一些人交谈以查看他们计算机上的内容, 但似乎他们无法看到内容,除非他们删除浏览器缓存。有没有办法在我身边处理这个问题,所以所有新事物都会自动显示在每个浏览器上?

【问题讨论】:

标签: html


【解决方案1】:

如果不清理缓存,就无法做到这一点。

不过,您可以通过按CTRL+SHIFT+R(至少在 Firefox 上)轻松删除缓存。

【讨论】:

    【解决方案2】:
    1. 您无法远程擦除某人的缓存。这次你唯一的选择是等待,或者告诉你的用户清除他们的缓存,或者指示他们用力按几次刷新,这将导致大多数浏览器刷新页面。
    2. 为了将来参考,有两种类型的缓存:基于过期的缓存和 ETag 缓存。

      如果您在 HTTP 响应中设置了明确的过期日期,则客户端将在过期日期过去之前根本不会进行检查。这大大减少了网络流量,代价是可能存在过时的内容。明智地选择到期日期以获得最佳折衷。

      另一种选择是 ETags,在这种情况下,服务器发送一个 ETag 令牌,客户端将询问“向我发送新内容,除非此令牌仍然有效”。这只会在一定程度上减少网络流量,但可以保证您始终拥有最新的内容。

      您需要在实践中平衡您的缓存策略。首先决定你是否需要缓存,然后决定你需要多少以及你愿意做出什么样的权衡。对于一个高流量的网站,即使是几分钟的缓存也是值得的,而在这种情况下,过时内容的问题将是微不足道的。

    【讨论】:

      【解决方案3】:

      您无法从服务器/客户端代码中删除删除用户的浏览器缓存。

      展望未来,你能做的最好的事情就是告诉浏览器not to cache at allto cache for a specified time(少于下一次预期更新)

      Cache-Control : no-cache
      
      Cache-Control : max-age=315600
      

      ETag 听起来可以达到目的(尽管我从未使用过)。

      服务器生成并返回一个任意令牌,通常是 文件内容的哈希或其他指纹。这 客户端不需要知道指纹是如何生成的,它只需要知道 需要在下一个请求时将其发送到服务器:如果指纹 仍然是一样的,那么资源没有改变,我们可以跳过 下载。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-08-22
        • 1970-01-01
        • 2019-06-30
        • 2016-09-06
        • 2011-08-12
        • 2016-05-25
        • 2010-12-19
        • 2023-03-22
        相关资源
        最近更新 更多