部署网络应用

Deploy web application

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

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

大多数用户使用 google chrome。问题是浏览器缓存样式 javascript 文件。部署新版本后,浏览器将加载旧版本的 javascript 文件。

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

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

谢谢指教

如果这是关于 .css 和 .js 的更改,一种方法是 "cache busting" 是在每个版本的文件名后附加类似“_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 Link

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

或者,如果您使用的是节点 js、react js、angular js,那么您可以使用 index.ejs 而不是 index.html,并且您可以在 js 和 css 类库

script1.1ebecec8538d52c8f844.js
script2.2e765bd6680f0c925e8a.js

style1.1ebecec8538d52c8f844.css
style2.2e765bd6680f0c925e8a.css

或者您也可以对 npm 项目使用 CI/CD。

您可以确保您对捆绑文件所做的任何更新都会立即为所有使用版本化名称的用户生效:

<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 包,以获得更好的发布流程。

Use the tag helpers for script and style 个文件,这些文件带有一个附加属性 append-version,每次文件发生变化时都会附加一个新的查询字符串值。

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