Visual Studio未将HTML / JavaScript更新到服务器/浏览器

35

这是一个使用Hot Towel SPA模板的MVC 4应用程序。 每当我更改HTML和/或javascript中的任何内容时,唯一的方法是清除浏览器缓存才能显示新代码。 F5、cntrl-F5、shift-F5都无效。

我通常不是Web开发人员,正在学习这个。 我以前做过常规的MVC,并没有遇到这个问题,也许与我的项目中的HTML和javascript所在的位置有关(即在/App文件夹中)?我正在疯狂地尝试解决这个问题。

我可以完全删除HTML文件并运行应用程序,它仍然像以前一样运行。清除缓存并运行后,我才会得到更新。

它在使用Firefox, Chrome, IE的IIS Express上运行...

谢谢..

12个回答

50
在Opera和Chrome(可能还有其他浏览器)中,您可以在“开发模式”下禁用缓存。
在DevTools中,设置菜单中的第二个选项是“在打开DevTools时禁用缓存”。

4
只有当问题出现在浏览器端时(我之前也遇到过这种情况),这才能解决问题,但如果问题出现在 Angular 和 .net 之间保存更改的文件方面,则无法解决。 - Laszlo Sarvold
1
在 Windows 上的 Chrome 101.X 中,此选项位于“首选项”->“网络”,是第四个选项。 - computercarguy

21

我也遇到过这个问题,结果发现是因为缓存的原因。

如果使用Chrome DevTools,您可以通过导航到Network选项卡并勾选Disable Cache来简单地禁用缓存。

这只会在 Dev Tools打开时禁用缓存。


这真的很有帮助,我认为应该标记为正确解决方案。 - Santiago Rebella

19

进入你的 web.config 文件并对其进行更改。无论你做出什么更改都不重要。例如,输入一个字符然后将其删除,构建项目并再次运行它。我希望这样能够起作用。


3
请将这个答案视为有效。关闭浏览器缓存在您进行开发以外的浏览时并不是一个好主意。请接受此回答。 - Adriaan Davel
2
这对我没有用,仍然会加载和执行“dynamic”文件夹中的旧*.js文件。唯一的影响是VS强制您重新启动调试会话。 - Matt
尽管我已经尝试了所有其他方法,但这个对我起作用了。 - Steve Johnson
我已经做了,但仍然有问题。在实时网站上没有看到任何更改。 - ALi
经过数小时的尝试,这个解决方案最接近了。然而,一旦我重新打开缓存,仍然得到错误的页面。有任何想法吗? - yoad w

8

按下ctrl+shift+F5就可以解决问题!看起来浏览器缓存是问题的一部分 :)


7
在我的情况下,IIS Express没有更新站点,但是由IIS管理器创建的站点正常工作?
解决此问题的可能方法是在Visual Studio中设置“使用此64位版本的IIS Express用于网站和项目”选项,该选项位于选项->项目和解决方案->Web项目。

6
我发现我在Chrome开发者工具的Sources视图中打开了.js文件。 当我关闭文件并刷新页面后,新的.js文件就如预期般出现了。

这是我的问题,但为什么?我刷新了页面,当它打开时,也许Chrome工具没有更新文件? - Geomorillo

6

我在服务器上遇到了关于移动.ts和.html文件的问题,需要:

  1. 停止调试
  2. 清空ClientApp中的整个output/dist文件夹
  3. 重新开始调试
  4. 使用Ctrl-F5强制刷新浏览器缓存

仅禁用浏览器缓存、强制.net应用程序重新编译或运行ng serve都没有效果。


Ctrl+F5对我有用,谢谢! - undefined

5
浏览器默认会缓存文件。您可以在浏览器中关闭缓存以获取更改后的文件。

1
请参考Hamid提供的其他解决方案,此答案仅适用于暂时重新缓存内容,但应重新启用缓存。 - aggaton
这段内容与编程有关。在开发过程中,此设置应始终保持打开状态。 - John Papa

2
没有上述列出的方法能够始终有效,而且考虑到任务窗格中使用的浏览器因使用的Windows版本/构建而异,因此您可能需要在每种情况下清除不同浏览器的缓存。
然而,真正的问题似乎不是浏览器缓存,而是VS决定部署到用于测试/开发的本地IIS Express服务器的哪些文件。在许多情况下,即使您也修改了web.config文件,按下“开始”按钮后修改后的html和/或js文件也无法成功部署到本地。
我让它始终有效的方法是:选择Web应用程序项目(在“解决方案资源管理器”中),打开属性,单击“打包/发布Web”选项卡,然后在“要部署的项”下选择“此项目中的所有文件”。
对我来说很好用!

1
一开始没起作用,因为我需要在更改项目属性后清除缓存。但现在当我更改.js文件时,它会自动工作,而不需要一直清除缓存。谢谢你! - yack

2
以下是我们可以使用的一些选项来解决问题。
  • ctrl + shift + r(这将对当前标签进行强制刷新)
  • ctrl + F5(这将强制浏览器刷新缓存)
  • 停止调试并更改web.config文件,然后再次运行
  • 停止调试并清理项目,重新构建并运行项目

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接