Visual Studio Express 2012 Web调试随机不刷新浏览器缓存的变化



已经使用Visual Studio Express 2012 Web几个星期了,现在正在学习基于Web的应用程序的JavaScript, HTML5和CSS。作为一名。net开发人员,熟悉VS是很好的(尽管更好的JS/HTML智能感知会很好),我的进度也很好,但是在调试过程中有一个讨厌的VS怪癖,我无法解决。偶尔VS(或者更具体地说是IE10)会停止识别任何代码更改并运行以前版本的代码。这很烦人,但我可以通过在IE10启动时按下额外的F5来解决这个问题,但这应该是不必要的。我假设IIS express的文件缓存在源更新时没有刷新,但我可能错了。遇到这个问题一段时间后,我无法找到一个模式来理解是什么使用模式导致了这个问题。

还有人看到这个吗?修复吗?网上搜索一无所获

我使用VS网站项目类型,并在Windows 8上安装VS 2012 express(使用IIS express),并在IE10上调试。

谢谢。

有没有使用visual studio web的web开发人员找到了解决这个问题的方法?我发现Chrome更可靠,以确保缓存刷新时,代码的变化,但与IE &;VS集成更容易用IE开发。

这一定是个常见的问题吧?我也尝试过IIS Express,也遇到了同样的问题(我确信这是浏览器缓存的问题)。通常,这个问题发生在第一次运行IE时,如果我的Javascript代码中有一个错误,在屏幕被绘制之前破坏了执行,这是相当痛苦的,因为手动清除缓存不那么容易。我唯一的解决方法是使用F12和"清除此域的浏览器缓存",然后F5刷新。

如果有任何解决这个问题的建议,我将不胜感激

添加:

window.applicationCache.addEventListener('updateready', function (e)
{
  if (window.applicationCache.status == window.applicationCache.UPDATEREADY)
  {
    window.applicationCache.swapCache();
    if (confirm('A new version of this site is available. Load it?'))
     window.location.reload();
  }
}, false);

我在网上找到了这个解决方案。对不起,我不记得作者了。当我使用IE在Visual Studio 2012中使用JavaScript调试Web应用程序时,它适用于我。请不要再诅咒微软了。我们都用他们的产品,公平点。我不在微软工作,但如果没有微软的产品,我也会不开心。我想我们都会的。

我自己使用Chrome,但仍然遇到同样的问题。最后,我决定在我的本地WebServer上完全关闭缓存——即VS的IIS Express。这可以通过在web.config中加入0UseMaxAge来实现。如下:

XML
<configuration>
  ...
    <system.webServer>
      ...
      <staticContent>
        ...
        <clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="0.00:00:00" />
      </staticContent>
  </system.webServer>
</configuration>
笔记
  • 这也适用于常规/完整的IIS。
  • 确保NOT将此设置部署到生产环境。在那里使用特定于生产的web.config以允许最终用户利用一些缓存:)。否则,这可能是性能杀手。
  • 使用CTRL+F5而不仅仅是F5应该也刷新它,但是不知何原因没有工作Chrome v39.0.2171.71 m)。我发现它确实工作直接打开缓存的Javascript URL在同一浏览器(!)选项卡,按CTRL+F5然后返回到(HTML)页面,并使用CTRL+F5再次。
  • 另一个有时有效的选项是重新启动IIS Express(在任务栏右键单击并从上下文菜单中选择"退出")。但这也很麻烦…:)

最新更新