English 中文(简体)
无论我做什么,JavaScript文件都不会更新
原标题:JavaScript file not updating no matter what I do

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

现在,我似乎无论如何都无法摆脱旧的JS,除非我更改文件名(我真的不想这么做),或者将脚本添加到PHP页面,这会使它拥挤不堪。

有人知道解决这个问题的办法吗?

最佳回答

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

在某些浏览器上,您可以使用CTRLF5强制刷新(在PC上)。在Mac上,它是CmdShiftR

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

但我想在这里给出一个警告:即使你可以硬刷新,你怎么知道你的客户正在获得最新版本?所以你需要检查一下,而不仅仅是确保你和你的项目经理能够进行一次艰难的刷新,然后回家拿下下下个月的薪水。如果你想做一项让世界变得更好的工作,或者让世界变得比你发现的更好一点,你需要进行更多的调查,以确保它对你的客户也有效(否则,有时客户可能会打电话给技术支持,技术支持可能会读到“清除cookie,它就会起作用”的脚本,这有时会发生在我身上)。本文底部的一些方法可以确保客户获得最新版本。

Update 2020:

如果你使用的是Chrome,并且DevTools是打开的,你可以点击并按住地址栏前面的刷新图标,就会弹出一个框,你可以选择“硬重新加载”,甚至“清空缓存和硬重新加载“:

hard reload button

Update 2017:

如果你使用谷歌Chrome调试器,它是一样的,你可以转到网络部分,并确保在调试器面板的设置中选中“禁用缓存(当DevTools打开时)”。

此外,当您链接JavaScript文件时,使用

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

或者v=2,依此类推,当您确定要刷新文件时。或者,您可以转到控制台,执行Date.now()并获取时间戳,例如14911313943549,然后使用

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

一些构建工具会自动为您完成此操作,或者可以配置为执行此操作,使其类似于:

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

这基本上将破坏高速缓存。

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

问题回答

添加一个怎么样?2到标签?

<;script src=“a.js?2”></脚本>

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

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

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

The solution I use is. Using firefox
1. using web developer --> Web Console
2. open the java-script file in new tab.
3. Refresh the new tab you should see your new code.
4. Refresh the original page
5. You should see your changes.

I had this problem and solved in Chrome by just disabling Cache: - Click F12; - Go at Network tab; - Click on "Disable Cache".

派对有点晚了,但如果你把它放在你的html中,它会阻止你的网站更新缓存。加载网站需要更长的时间,但出于调试目的,我喜欢它。摘自以下答案:如何以编程方式清空浏览器缓存

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

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

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

伪代码示例:

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

这将确保你的浏览器总是重新加载文件,因为它认为这是一个不同的文件,因为url中的随机数。

服务器将始终返回文件,并忽略?之后的内容。

在Firefox和Chrome中,这真的很烦人,但因为它们的默认设置可以通过以下方式更改,然后它们就可以工作了。我在Chrome和Firefox中都尝试了相同的步骤顺序。

  1. Press F12 (Open Inspector)
  2. Click Network, and then click Disable Cache
  3. Now click Clear icon. In Firefox, it shows as a trash bin icon on left corner, in Chrome it is the second left icon, in between stop recording and Filter .
  4. Now press F5 or refresh the page

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

在Asp.netcore中,我们可以使用Asp附加版本taghelper

<script src="~/js/site.js" asp-append-version="true"></script>

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

我有一段时间也有同样的问题,并且设法弄清楚。。。我的情况是因为我有两个具有相同函数名的javascript。

1.Clear browser cache in browser developer tools 2.Under Network tab – select Disable cache option 3.Restarted browser 4.Force reload Js file command+shift+R in mac   Make sure the fresh war is deployed properly on the Server side

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

在Cloudflare中,您可以使用dev模式禁用代理。

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

当我遇到这个问题时,我会尝试以下步骤序列:

  1. 硬刷新页面。

  2. 清除缓存+cookie。

  3. 在我的脚本中添加一个静态版本。

    src=“我的脚本名称.js?v=1”

  4. 如果以上内容没有帮助,请在我的脚本中添加一个动态版本:

    src=“我的脚本名称.js?v=”+Date.now()+Math.random()

简单的修复,只需将javascript代码添加到索引页面,当您重新加载页面时,就会更新您更新的代码





相关问题
selected text in iframe

How to get a selected text inside a iframe. I my page i m having a iframe which is editable true. So how can i get the selected text in that iframe.

How to fire event handlers on the link using javascript

I would like to click a link in my page using javascript. I would like to Fire event handlers on the link without navigating. How can this be done? This has to work both in firefox and Internet ...

How to Add script codes before the </body> tag ASP.NET

Heres the problem, In Masterpage, the google analytics code were pasted before the end of body tag. In ASPX page, I need to generate a script (google addItem tracker) using codebehind ClientScript ...

Clipboard access using Javascript - sans Flash?

Is there a reliable way to access the client machine s clipboard using Javascript? I continue to run into permissions issues when attempting to do this. How does Google Docs do this? Do they use ...

javascript debugging question

I have a large javascript which I didn t write but I need to use it and I m slowely going trough it trying to figure out what does it do and how, I m using alert to print out what it does but now I ...

Parsing date like twitter

I ve made a little forum and I want parse the date on newest posts like twitter, you know "posted 40 minutes ago ","posted 1 hour ago"... What s the best way ? Thanx.