如何确保 ASP.NET Web 窗体中的 web.config 更新后不缓存 ASPX 页面?

问题描述 投票:0回答:1

我正在开发一个带有 ASPX 页面的 .NET wcf 应用程序。每次更新 web.config 文件(例如更改版本控制)时,我想确保没有任何页面被缓存,并且始终使用更新的版本重新加载。

我的担忧:
默认行为:默认情况下是否缓存 ASPX 页面(在浏览器或服务器上)?
更新后缓存:当我更改 web.config 时,如何确保所有页面始终获取最新内容并且不从缓存提供服务?
缓存控制:在这种情况下,完全禁用浏览器和服务器端缓存的最佳方法是什么?

我的问题:
如何确保 web.config 更新后根本不会发生缓存(浏览器端和服务器端),以及如何强制重新加载所有页面的最新版本?

asp.net .net wcf cache-control
1个回答
0
投票

对于网页来说,这并不是什么问题。

ASPX 页面是否默认缓存(在浏览器或服务器上)?

不,服务器缓存并没有真正发生,但这假设您在更新网站时采取步骤。

我的意思是,对于桌面程序,您无法在程序运行时更新程序,并且 .dll 通常会在内存中并被锁定。这不叫缓存,这叫内存中锁定的 .dll!

因此,对于此处缓存的某些网页(或代码),更新 web.config 确实为零。这里有两个非常不同的问题。

公平地说,更新 web.config 将触发应用程序池重新启动,这足以更改 web.config。但是,更新网站代码和页面吗?这与更新 web.config 无关(它们只是相关,因为您经常更新某些页面,并且通常会在新发布期间更新 web.config)。

但是,为了安全起见,我建议在任何更新之前停止应用程序池和网络服务器(而不是网站),这样这个问题就不再是问题了。当然,停止 Web 服务器(从 IIS)意味着任何站点都将被停止。

上述建议的原因当然是就像上面的桌面示例一样,然后.dll(即您的隐藏代码)在使用时可以锁定在内存中。因此,即使在不首先从 IIS 管理器停止 Web 服务器(和应用程序池)的情况下发布站点? 然后一些代码资产可以被缓存,但更好的说法是,被锁定在内存中并“使用中”。

请注意,当我说停止 Web 服务器时,我的意思是从 IIS 管理器停止给定的服务器,而不是停止整个 Windows 服务器!

上面解决了内存服务器端的任何服务器端代码和资产?

.scc 和脚本文件在客户端缓存的非常困难的问题仍然是一个问题和挑战。

此类资源(.css 和 .js 文件)可以在客户端浏览器中缓存数月甚至更长时间。

在服务器端更新此类文件资源不会更新客户端。您无法控制这个问题 – 该过程基于客户端浏览器端设置 – 您根本无法控制的设置,故事结束!

这里经常使用两种方法。

如果您更新脚本库或 .css 文件,还需更改名称。如果很多页面都有脚本和 .css 引用文件,那么从开发人员的角度来看,这可能会很痛苦。如果可能的话,请将所有此类参考文献放入“母版”页面(如果有的话)。因此,此类引用文件在站点中仅存在一个“位置”。

因此,重命名是确保客户端浏览器重新加载新脚本(或 .css)文件的可靠方法。但是,此类重命名可能会破坏具有此类引用的页面。

另一种通常首选的方法是简单地向此类文件添加“虚拟”版本号。因此,无需重命名即可触发客户端浏览器重新加载此类资源。

假设您有这个 .js 和 .css 文件:

<link href="/Scripts/jquery.toast.min.css" rel="stylesheet" />
<script src="/Scripts/jquery.toast.min.js"></script>

并且说您更新了以上两项?并且没有更改文件名?

强制客户端浏览器查看/使用并下载新的更新文件?

您可以添加一个“虚拟”版本号,如下所示:

<link href="/Scripts/jquery.toast.min.css&ver=1.2" rel="stylesheet" />
<script src="/Scripts/jquery.toast.min.js&vers=1.2"></script>

如果您再次更新上述 2 个文件(.css 和脚本),则只需将数字从 1.2 增加到 1.3,依此类推。但是,如果该站点有很多页面,并且每个页面都有这样的脚本文件引用呢?然后您需要更新所有此类页面。

有一些“自动化”的第 3 方工具可以/将找到所有脚本和 .css 文件引用,并在每次部署(发布)时为您“增加”ver(版本)号。但是,此功能既不是 Visual Studio 的一部分,也不是内置于 Visual Studio 中。

© www.soinside.com 2019 - 2024. All rights reserved.