(Angular 4、AOT、缓存刷新) 如何在服务器发生代码更改时强制终端用户浏览器进行硬刷新?
(Angular 4, AOT, cache refresh) How to force end users browsers to do a hard refresh when code changes occur on server?
当我准备好将我的代码更改发布到我们的服务器时,我使用 Angular AOT 构建和编译并复制我的文件。有时最终用户没有得到这些更改,必须进行硬刷新,或者进入他们的浏览器历史记录并清除缓存的图像和文件。当我在服务器上更改代码时,推荐的强制硬刷新方法是什么?
我读过有关将版本号附加到 .css 和 .js 文件的信息,以便浏览器重新下载新命名的文件,但 angular AOT 创建 ngfactory.js文件和 ngfactory.js.map 文件等,我想确保我这样做是正确的。
此外,我正在使用 IIS 托管网站,所以如果有办法通过 ISS 实现刷新,我也愿意接受。
当您使用 ng build --prod
构建时,这也意味着 aot,生成的包具有新名称..
一种常见的方法是将 IIS 配置为永远不允许缓存 index.html.. 这样,如果客户端看到相同的包名称,在始终最新的 index.html 中,它会被缓存.. 但是如果您生成新的捆绑包,则会下载它。
相关SO答案here.
此外,您可以google“缓存清除”找到很多资源。
为此,您可以设置 iis 不缓存 index.html 文件。为此,您只需包含 web.config 文件并将此设置添加到其中。
<configuration>
<location path="index.html">
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
</configuration>
当我准备好将我的代码更改发布到我们的服务器时,我使用 Angular AOT 构建和编译并复制我的文件。有时最终用户没有得到这些更改,必须进行硬刷新,或者进入他们的浏览器历史记录并清除缓存的图像和文件。当我在服务器上更改代码时,推荐的强制硬刷新方法是什么?
我读过有关将版本号附加到 .css 和 .js 文件的信息,以便浏览器重新下载新命名的文件,但 angular AOT 创建 ngfactory.js文件和 ngfactory.js.map 文件等,我想确保我这样做是正确的。
此外,我正在使用 IIS 托管网站,所以如果有办法通过 ISS 实现刷新,我也愿意接受。
当您使用 ng build --prod
构建时,这也意味着 aot,生成的包具有新名称..
一种常见的方法是将 IIS 配置为永远不允许缓存 index.html.. 这样,如果客户端看到相同的包名称,在始终最新的 index.html 中,它会被缓存.. 但是如果您生成新的捆绑包,则会下载它。
相关SO答案here.
此外,您可以google“缓存清除”找到很多资源。
为此,您可以设置 iis 不缓存 index.html 文件。为此,您只需包含 web.config 文件并将此设置添加到其中。
<configuration>
<location path="index.html">
<system.webServer>
<httpProtocol>
<customHeaders>
<add name="Cache-Control" value="no-cache" />
</customHeaders>
</httpProtocol>
</system.webServer>
</location>
</configuration>