代码之家  ›  专栏  ›  技术社区  ›  Tarik

不管我做什么,javascript文件都不会更新

  •  44
  • Tarik  · 技术社区  · 15 年前

    我有一个外部的javascript文件,无论是在火狐还是Chrome中,无论浏览数据被清除,它都不会更新。我相信 某物 发生在我备份我的文件时,我只是在文件名的末尾添加了“日期”。然后另存为原始名称。

    现在,无论怎样,我都无法摆脱旧的JS,除非我更改了文件的名称(我真的不想这样做),或者将脚本添加到php页面中,而这个页面会挤满它。

    有人知道解决办法吗?

    10 回复  |  直到 7 年前
        1
  •  69
  •   nonopolarity    9 年前

    您确定要链接到同一文件,然后编辑同一文件?

    在某些浏览器上,可以使用ctrl f5强制刷新。

    Firebug还有一个带有“禁用浏览器缓存”的网络选项卡。

    更新2017:

    如果您使用Google Chrome调试器,它是相同的,您可以转到网络部分,并确保在调试器面板的设置中选中“禁用缓存(devtools打开时)”。

    此外,当链接javascript文件时,使用

    <script src="my-js-file.js?v=1"></script>
    

    v=2 等等,当您确定要刷新文件时。或者你可以去控制台做一个 Date.now() 并获取时间戳,例如 1491313943549 及使用

    <script src="my-js-file.js?t=1491313943549"></script>
    

    一些构建工具将自动为您完成这项工作,或者可以配置为完成这项工作,使其类似于:

    <script src="main.742a4952.js"></script>
    

    从本质上讲,这会破坏缓存。

    注释 当你使用 V=2 t=1491313943549 main.742a4952.js 你也有这样的优势,对你的用户来说,他们肯定也会得到更新的版本。

        2
  •  15
  •   nsdel    15 年前

    添加''怎么样?标签2?

    <script src="a.js?2"></script>

    服务器应返回带有或不带有“”的同一文件。2’,但浏览器应将其视为不同的文件并重新下载。只要更改文件,就可以更改此查询字符串。

    改编自: http://blog.httpwatch.com/2007/12/10/two-simple-rules-for-http-caching/

        3
  •  12
  •   Anthony    15 年前

    我以前也遇到过这个问题,这很让人沮丧,但我找到了一份工作。输入JS文件的完整地址(即yourhost.com/javascript.js)并加载它。您可能会看到旧版本加载。然后按F5刷新页面,您将看到新版本加载。JS文件现在将在缓存中更新,代码将按预期运行。

        4
  •  9
  •   Richard Culmone    12 年前

    我使用的解决方案是。 使用Firefox
    1。使用Web开发人员-->Web控制台
    2。在新选项卡中打开Java脚本文件。
    三。刷新新选项卡,您应该看到新代码。
    4。刷新原始页
    5。你应该看到你的改变。

        5
  •  3
  •   Prashanth Subramanian    13 年前

    暂时将JS文件重命名为其他文件。这是唯一对我有用的东西。

        6
  •  1
  •   xyzzy.rad    12 年前

    绕过浏览器缓存的最佳方法是在JS文件的路径上附加一个随机数。

    伪代码示例:

    // generate a random number
    int i = Random.Next();
    echo "<script src='a.js?'" + i + "></script>";
    

    这将确保您的浏览器总是重新加载该文件,因为它认为该文件与URL中的随机数不同。

    服务器将始终返回文件并忽略“?”后面的内容。.

        7
  •  1
  •   Felipe Ferrari ferrari212    7 年前

    我遇到了这个问题,在Chrome中通过禁用缓存解决了这个问题: 点击F12; -转到网络选项卡; -单击“禁用缓存”。

        8
  •  0
  •   Glenn Nelson    15 年前

    您是否100%确定您的浏览器甚至正在加载脚本?在火狐中进入你的页面,使用firebug中的控制台检查脚本是否已经加载。

        9
  •  0
  •   Mark Khor    9 年前

    我有一段时间也遇到了同样的问题,并设法找出…我的例子是因为我有两个相同函数名的javascript。

        10
  •  0
  •   Community Mohan Dere    9 年前

    派对稍微晚了一点,但是如果你把它放到你的HTML中,它会阻止你的网站更新缓存。加载网站需要更长的时间,但出于调试目的,我喜欢它。摘自此答案: How to programmatically empty browser cache?

    <meta http-equiv='cache-control' content='no-cache'>
    <meta http-equiv='expires' content='0'>
    <meta http-equiv='pragma' content='no-cache'>