【问题标题】:Deploy web application部署 Web 应用程序
【发布时间】:2020-02-06 17:05:39
【问题描述】:

我是网络部署的新手。现在我必须管理 Windows 服务器,并且每个月我都需要部署新版本的应用程序。

我在使用 javascript 时遇到了问题。在几乎每个版本的 Web 应用程序中都会更改一些 javascript 文件(所有 javascript 文件都捆绑在一个缩小的 javascript 文件中)。

大多数用户使用谷歌浏览器。问题是浏览器缓存了 javascript 文件的样式。部署后新版本在浏览器中加载旧版本的 javascript 文件。

是否存在任何解决方案如何在应用程序中以编程方式解决此问题或部署后的某些解决方案?在没有用户协作的最佳情况下(例如通过 CTRL+R 刷新缓存)?最佳做法是什么?

我们的应用程序是作为 .NET CORE 2 Razor Pages Web 应用程序开发的。

感谢您的建议

【问题讨论】:

  • 如果脚本文件包含在生成的页面 (.aspx) 中,那么您可以在 URL 末尾附加文件最后修改的时间戳,通常以 src="filename.js?1570619975911" 结尾。这意味着如果文件更改了,那么 Url 也会更改,因此之前缓存的版本将被忽略。

标签: javascript c# razor-pages webdeploy web-development-server


【解决方案1】:

Use the tag helpers for scriptstyle 文件,它们采用附加属性 append-version,每次文件发生更改时都会附加一个新的查询字符串值。

<link href="/styles/site.css" append-version="true" />
<script src="/scripts/site.js" append-version="true"></script>

【讨论】:

    【解决方案2】:

    如果您使用的是普通的 html、css、js 项目,那么您可以在您的 js 和 css 库中添加版本控制,并使用更新的版本更新您的 index.html。

    或者,如果您使用的是 node js、react js、angular js,那么您可以使用 index.ejs 而不是 index.html,您可以使用您的 js 和 css 库添加哈希码,例如

    script1.1ebecec8538d52c8f844.js
    script2.2e765bd6680f0c925e8a.js
    
    style1.1ebecec8538d52c8f844.css
    style2.2e765bd6680f0c925e8a.css
    

    或者您也可以将 CI/CD 用于 npm 项目。

    【讨论】:

      【解决方案3】:

      您可以确保您对捆绑文件所做的任何更新都会立即为所有使用版本名称的用户进行,例如:

      <link rel="stylesheet" href="style.css?v=1.1">
      

      浏览器会将style.css 的文件名视为与style.css?v=1.1 的文件名不同。它也适用于脚本文件:

      <script src="main.bundle.js?version=1.0.1"></script>
      

      但是,如果您有一个巨大的文件,并且更改了一行代码,则用户必须再次下载整个文件。想一个解决方案,创建更多更小的文件,例如将解决方案中使用的 npm 包从您自己的代码中拆分出来,以获得更好的发布流程。

      【讨论】:

        【解决方案4】:

        如果这是关于 .css 和 .js 的更改,一种“缓存破坏”的方法是在每个版本的文件名中附加“_versionNo”之类的内容。例如:

        script_1.0.css // This is the URL for release 1.0
        script_1.1.css // This is the URL for release 1.1
        script_1.2.css // etc.
        

        或者在文件名之后做:

        script.css?v=1.0 // This is the URL for release 1.0
        script.css?v=1.1 // This is the URL for release 1.1
        script.css?v=1.2 // etc.
        

        请检查链接 Link

        【讨论】:

          猜你喜欢
          • 2016-02-12
          • 2019-01-23
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多