【问题标题】:HTML link that forces refresh?强制刷新的 HTML 链接?
【发布时间】:2023-03-12 05:33:01
【问题描述】:

有没有办法构造一个指向 URL 的链接,强制浏览器忽略它可能对该 URL 拥有的任何缓存?

我们有一些网站在经过多年的静态内容之后最近发生了变化。用户单击这些站点的快捷方式、收藏夹或键入 URL 并获取旧的缓存内容。我想要一个带有指向相同 URL 但强制浏览器获取新内容的链接的页面。

这可能吗?跨浏览器?

【问题讨论】:

    标签: html browser refresh


    【解决方案1】:
    1. 使用无意义的查询参数更改页面的所有链接:products.html?happy=days
    2. 将页面上的所有资源更改为使用另一个无意义的查询参数:style.css?the=fonz

    您可以使用日期或时间戳或版本号以系统的方式进行操作,或者随意使用情景喜剧、布偶、山脉和小型哺乳动物。

    【讨论】:

    • 您知道一种形成强制刷新快捷方式的 URL 的方法吗?例如,我看到 www.abc.com/?happy=days 会是新鲜的内容,但如果我有 www.abc.com 的快捷方式,它也会被刷新吗?
    • Tom,你是说需要同时做这两件事还是只做其中一件?
    • 我意识到这是旧的,但参数建议 +1。
    【解决方案2】:

    在具有唯一值的 href 末尾添加一个 url 参数,例如 new Date().getTime():

    ...somePage.html?time=123456789
    

    【讨论】:

      【解决方案3】:

      当我需要完全刷新页面时,我只需添加?v= 后跟一个随机字符串。当浏览器在页面之后检测到查询字符串时,它们会自动绕过缓存(如果缓存版本中不存在相同的查询字符串),因为页面的内容可能会根据查询字符串的值而改变。

      由于网页可以每秒重新加载一次,因此我使用当前的 UNIX 时间戳,后跟一个字母和 1 到 1000 之间的随机数。

      两个页面获得完全相同的查询字符串的可能性接近于 null。

      【讨论】:

        【解决方案4】:

        很多人使用版本查询字符串参数。

        查看 SO 源代码

        <script type="text/javascript" src="http://sstatic.net/so/js/master.js?v=4143"></script>
        

        特别注意 ma​​ster.js?v=4143

        就我个人而言,我在应用程序范围内的配置文件中设置了此设置,但我相信如果您需要更精细的自动版本控制,您可以在源代码管理中正确执行此操作。

        【讨论】:

          【解决方案5】:

          使用 javascript 强制刷新的 HTML 链接:

          <a href="javascript:location.reload();"  
            class="btn btn-sm btn-info"><span class="fa fa-refresh"></span></a>
          

          【讨论】:

            猜你喜欢
            • 2016-02-08
            • 1970-01-01
            • 2011-05-09
            • 1970-01-01
            • 2010-12-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多