【问题标题】:Azure App Service - Browsed Content not updated following PublishAzure 应用服务 - 发布后未更新浏览的内容
【发布时间】:2017-03-01 03:18:15
【问题描述】:

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

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

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

如果我们只是通过门户重新启动应用服务并重新浏览,我们将获得新内容。维奥拉,但是发生了什么事?

Azure 应用服务托管 ASP.NET Web API 应用程序,版本为 4.6.1,64 位,集成管道,ARR off,Always On on

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

环境变量WEBSITE_LOCALCACHE_ENABLED = False

非常感谢任何提示或帮助。

【问题讨论】:

    标签: azure asp.net-web-api2 azure-web-app-service


    【解决方案1】:

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

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

    【讨论】:

    • 有趣的是,我们的 web.config 中确实有一个 &lt;staticContent&gt; 块,但它被完全注释掉了。是否启用了默认的 IIS clientCacheMode
    • 请查看您的代码。如果在其他一些地方启用了静态缓存,并且默认情况下,IIS 不会启用客户端缓存。干杯。
    • 不要认为这是问题所在——没有其他配置在起作用,而且我们使用客户端缓存的代码为零。我还注意到这个问题是间歇性的。有时我们部署后新内容是可获取的,而其他时候则不是。
    • 这里有 CDN 在玩吗?
    • 在Web.config文件中添加配置后是否尝试重启WebApp?如果不是,请尝试重启WebApp,然后尝试上传新文件并在浏览器中访问。
    【解决方案2】:

    该问题对应于我们项目中的一个点,即我们在部署期间没有正确更新 .NET 程序集版本。一旦我们修改了代码和构建过程以在每次部署时生成一个新的 AssemblyVersion,问题就消失了。

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多