【问题标题】:Clear cached JavaScript includes in Firefox清除 Firefox 中包含的缓存 JavaScript
【发布时间】:2011-06-07 22:19:32
【问题描述】:

我正在为一个网站开发 JavaScript,使用 Firefox 进行开发,当我刷新页面时,我看不到我的更改。 JavaScript 文件位于外部文件中。我重新加载并刷新了几次页面,但旧的 JavaScript 文件仍然被缓存。最后,我直接在浏览器中加载 JavaScript 页面,查看旧脚本,点击“重新加载”,然后查看我的更改。

如何清除缓存的外部 JavaScript 文件?当我告诉客户进行了更改时,我也需要知道这一点,这样他们就不会看到旧的缓存功能。

【问题讨论】:

    标签: javascript firefox caching


    【解决方案1】:

    在 Firefox 中绕过缓存一次:

    • 按住 shift 键的同时单击重新加载按钮。
    • Ctrl+F5
    • Ctrl+Shift+R 或 Cmd+Shift+R
    • for other browsers

    某些网络托管服务在服务器端缓存页面。绕过缓存时,Web 浏览器会发送一个标头告诉服务器它不应该响应缓存的数据。

    【讨论】:

      【解决方案2】:

      在 Firefox 中,您可以安装一个名为 Web Developer Toolbar 的插件,它有一个 appcache clear 命令

      我认为没有办法以编程方式执行此操作,但您可以使用类似

      的方式向浏览器提供提示
      <script type="text/javascript" src='js/my.js?x=<?php echo rand(0,100) ?>'></script>
      

      【讨论】:

      • 我有时也使用它,当我想让所有当前用户获得新内容时。但是,我建议使用filemtime('js/my.js') 而不仅仅是随机值。
      • 我发现 Web Developer Toolbar 上的“禁用缓存”选项对我有用 :)
      • 这个例子是为了快速测试。您可以通过网络浏览器地址栏刷新 JS 文件。例如:

        1. 假设您在网站 www.foo.com 2. 包含一个 JS 文件 bar.js 并存储在根目录 3. 该站点正在缓存旧版本4. 直接在浏览器中显示 JS 文件,带有随机查询字符串(例如 www.goo.com/bar.js?random=random) 5. 浏览器现在正在使用更新版本的 JS 文件。
      【解决方案3】:

      浏览器具有面向用户的工具来清除缓存。通常它是某个地方的菜单选项。您不能强制清除缓存。

      可以做的是安排从根据版本号(或其他)不同的 URL 加载脚本:

      <script src='http://your.site.com/js/big_script.js?version=2'></script>
      

      现在,当您更新代码时,您会更新使用它的页面:

      <script src='http://your.site.com/js/big_script.js?version=3'></script>
      

      这是一个不同的 URL,它不会在缓存中。

      【讨论】:

      • +1 的解决方案可以防止您的最终用户也获得过时的 Javascript。
      【解决方案4】:

      一种非常流行的技术是使用查询字符串参数。可能看起来像

      <script src="http://www.somedomain.com/foobar.js?v=1></script>
      

      如果您将此行更改为v=2,浏览器将重新加载之前缓存的脚本。

      【讨论】:

        【解决方案5】:

        禁用 js 缓存:开发工具 (F12) > 网络 > 禁用缓存

        然后刷新页面:F5

        【讨论】:

          【解决方案6】:

          Shift-reload 通常会更积极地清除缓存。但是,你真的不想依赖这个。一个好的技术是对外部 Javascript 的文件名进行版本控制,并在您更新时更新引用它们的 HTML。这样,您也可以更好地依赖缓存(例如,在您的网络服务器中将缓存标头设置为“公共”,并指定较长的过期时间)。

          【讨论】:

            【解决方案7】:

            禁用 Angular.js 分解:开发工具 (F12) > 调试器 > [设置图标] > 取消选中 Source Maps

            然后您可能需要重新启动 Firefox。

            Source Maps 阻止我调试修改后的应用程序。

            【讨论】:

              猜你喜欢
              • 2017-06-19
              • 1970-01-01
              • 1970-01-01
              • 2014-07-25
              • 2018-05-25
              • 2017-05-28
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多