Azure App Service - 浏览内容在发布后未更新

时间:2017-03-01 03:18:16

标签: azure asp.net-web-api2 azure-web-sites

我们有一个托管Web应用程序的Azure应用服务,其中包含静态HTML和JS内容。我们发现,在重新启动Azure App Service之前,我们部署到Web应用程序的新JavaScript内容不会在浏览器中更新。我们使用MSBUILD驱动的MSDeploy进行发布。

我们已通过Kudu确认我们的Java Script文件的新版本在那里。正如预期的那样,文件大小和修改日期/时间随着我们的部署而变化。

但是,如果我们在浏览器中点击它们(例如http://mysite.azurewebsites.net/theFile.js),我们会看到较旧版本的文件内容。这与浏览器无关,删除缓存后,以隐身模式运行,在F12工具中运行w / Cache禁用 - 始终获取旧内容。

如果我们只是通过Portal重新启动App Service并重新浏览,我们就会获得新内容。维奥拉,但是发生了什么?

Azure App Service托管一个ASP.NET Web API应用程序,版本为4.6.1,64位集成管道,ARR off,始终开启on

WebAPI应用程序定义了一个非默认路由,用于提供静态HTML文件。该文件具有指向与HTML文件并排存储在同一文件夹中的静态JS文件的链接。我们没有JS文件的具体路线......但是没有想到这是必要的。

环境变量WEBSITE_LOCALCACHE_ENABLED = False

任何提示或帮助都非常感激。

2 个答案:

答案 0 :(得分:1)

您是否为Web应用程序中的静态内容启用了客户端缓存?如果有,您可以禁用缓存:

<system.webServer>
    <staticContent>
      <clientCache  cacheControlMode="DisableCache" />
    </staticContent>
  </system.webServer>

答案 1 :(得分:0)

这个问题与我们项目中的一个问题相对应,我们在部署过程中没有正确更新.NET程序集版本。一旦我们修改了代码并构建了进程,以便在每次部署时生成一个新的AssemblyVersion,问题就会消失。

换句话说,既然我们总是使用新的4部分.NET版本进行部署,那么我们总是会收到正确的(当前位于Azure)版本的Java Script文件。

我注意到我们从未(现在仍然没有)更改index.html或JavaScript文件的名称。

我们没有更改任何路由或Azure设置 - 只是正确地增加了版本。我没有准确的解释,但这是我们现在观察到的并且很好。