Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/windows/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
无论我做什么,JavaScript文件都不会更新_Javascript_Windows_Browser - Fatal编程技术网

无论我做什么,JavaScript文件都不会更新

无论我做什么,JavaScript文件都不会更新,javascript,windows,browser,Javascript,Windows,Browser,我有一个外部JavaScript文件,无论是在FireFox还是Chrome中,无论是否清除了所有浏览数据,它都不会更新。我相信当我备份我的文件时发生了一些事情,我只是在名字的末尾加上了“_thedate”。然后另存为返回到原始名称 现在,我似乎无法摆脱旧的JS,除非我更改文件名(我真的不想这么做),或者将脚本添加到PHP页面中(这会导致页面拥挤) 有人知道这个问题的解决方案吗?您确定要链接到同一个文件,然后编辑同一个文件吗 在某些浏览器上,可以使用CTRL F5强制刷新(在电脑上)。在Mac上

我有一个外部JavaScript文件,无论是在FireFox还是Chrome中,无论是否清除了所有浏览数据,它都不会更新。我相信当我备份我的文件时发生了一些事情,我只是在名字的末尾加上了“_thedate”。然后另存为返回到原始名称

现在,我似乎无法摆脱旧的JS,除非我更改文件名(我真的不想这么做),或者将脚本添加到PHP页面中(这会导致页面拥挤)


有人知道这个问题的解决方案吗?

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

在某些浏览器上,可以使用CTRL F5强制刷新(在电脑上)。在Mac上,它是Cmd Shift R

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

但我想在此提出一个警告:即使您可以硬刷新,您如何知道您的客户正在获得最新版本?因此,你需要检查,而不仅仅是确保你和你的项目经理可以做一个硬刷新,只是回家拿下个月的工资支票。如果你想做一项让世界变得更好的工作,或者让世界比你发现的更好一点,你需要进行更多的调查,以确保它也能为你的客户服务(或者,有时客户可能会打电话给技术支持,技术支持可能会读到“清除cookies,它就会工作”的脚本,这是我有时会遇到的情况)。本文底部的一些方法可以确保客户获得最新版本

2020年更新: 如果您正在使用Chrome,并且DevTools处于打开状态,您可以单击并按住地址栏前面的刷新图标,将弹出一个框,您可以选择“硬加载”甚至“空缓存和硬加载”:

2017年更新: 如果您使用Google Chrome调试器,也一样,您可以转到网络部分,确保在调试器面板的设置中选中“禁用缓存(当DevTools打开时)”

另外,在链接JavaScript文件时,使用

<script src="my-js-file.js?v=1"></script>
某些构建工具将自动为您执行此操作,或者可以配置为执行此操作,使其类似于:

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

这实际上会破坏缓存


注意当您使用
v=2
t=1491313943549
main.742a4952.js
时,您还有一个优势,即对于您的用户来说,他们肯定也会得到更新的版本。

在标记中添加“?2”怎么样

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


改编自:

您是否100%确定浏览器正在加载脚本?转到Firefox中的页面,使用Firebug中的控制台检查脚本是否已加载。

我以前遇到过这个问题,非常令人沮丧,但我找到了解决方法。输入js文件的完整地址(即yourhost.com/javascript.js)并加载它。您可能会看到旧版本的加载。然后点击f5刷新该页面,您将看到新版本的加载。js文件现在将在缓存中更新,代码应按预期运行。

暂时将js文件重命名为其他文件。这是唯一对我有效的方法。

我使用的解决方案是。 使用firefox
1.使用web开发人员-->web控制台
2.在“新建”选项卡中打开java脚本文件。
3.刷新新选项卡,您将看到新代码。
4.刷新原始页面

5.您应该可以看到您的更改。

浏览器缓存的最佳方法是在js文件的路径中附加一个随机数

伪代码中的示例:

// generate a random number
int i = Random.Next();
echo "<script src='a.js?'" + i + "></script>";
//生成一个随机数
int i=Random.Next();
回声“;
这将确保您的浏览器始终重新加载该文件,因为它认为它是一个不同的文件,因为url中有随机数


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

我有一段时间遇到了同样的问题,并设法解决了。。。我的情况是因为我有两个相同函数名的javascript

派对有点晚了,但是如果你把它放在你的html中,它会阻止你的网站更新缓存。加载网站需要更长的时间,但出于调试目的,我喜欢它。从这个答案中可以看出:


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

1.在浏览器开发人员工具中清除浏览器缓存 2.在网络选项卡下–选择禁用缓存选项 3.重新启动浏览器 4.在mac中强制重新加载Js文件命令+shift+R  
确保在服务器端正确部署了fresh war

我试图刷新我的js文件,这简直是疯了,我什么都试过了。然后我做了一个标题检查,记得我使用的是Cloudflare


在Cloudflare中,可以使用开发模式禁用代理

不要忘记检查网页包编译中的任何错误。有时,app/javascript/packs/中的application.js由于网页包编译错误而无法重新加载。

在Firefox和Chrome中,这真的很烦人,但因为它们的默认设置可以通过以下方式更改,然后才能正常工作。我试着在Chrome和Firefox中使用相同的步骤顺序

  • 按F12(打开检查器)
  • 单击网络,然后单击禁用缓存
  • 现在单击清除图标。在Firefox中,它在左角显示为垃圾箱图标,在Chrome中,它是第二个左图标,位于“停止录制”和“过滤”之间
  • 现在按F5或刷新页面

  • 他们会在重新下载资源时使用新副本更新资源。

    尝试使用Fiddler查看您是否正在下载文件以及内容是否正确。尤米
    // generate a random number
    int i = Random.Next();
    echo "<script src='a.js?'" + i + "></script>";
    
    <meta http-equiv='cache-control' content='no-cache'>
    <meta http-equiv='expires' content='0'>
    <meta http-equiv='pragma' content='no-cache'>