清除浏览器缓存中的所有图像
Clear all image in browser cache
我有一个包含图像的 ASP.NET C# 应用程序。我进去修改了应用程序中使用的一些图像,但没有更改名称。我知道如果我更改名称,它会将新图像下载到浏览器,但如果我的客户已经访问过该页面,则该图像很可能会缓存在客户端计算机上。
我想知道,有没有办法通过会话开始时的 GLOBAL.ASAX 页面来指示网站应该拉取所有信息并下载并忽略所有本地缓存数据?
这对 JS 和 CSS 文件也很有帮助。现在我根据应用程序的版本附加了一个 URL 参数...我不想对所有图像都这样做...
您可以使用 Clear-Site-Data
HTTP header。
The Clear-Site-Data header clears browsing data (cookies, storage, cache) associated with the requesting website. It allows web developers to have more control over the data stored locally by a browser for their origins.
它仍被标记为实验性的,但应该适用于所有现代浏览器。
有关详细信息,请参阅 MDN 文档中的 Clear-Site-Data。
您可以这样设置 header:
response.Headers.Add("Clear-Site-Data", "cache");
如果您想在每次发布新版本时刷新缓存,您可以将其与 cookie 结合使用并在您的 global.asax 中使用此代码:
protected void Application_BeginRequest(object sender, EventArgs e)
{
var request = ((HttpApplication)sender).Request;
var response = ((HttpApplication)sender).Response;
var versionCookie = request.Cookies["version"];
if (versionCookie == null)
{
versionCookie = new HttpCookie("version");
versionCookie.Expires = DateTime.Now.AddYears(5);
}
if (versionCookie.Value != currentVersion)
{
versionCookie.Value = currentVersion;
response.SetCookie(versionCookie);
response.Headers.Add("Clear-Site-Data", "cache");
}
}
我有一个包含图像的 ASP.NET C# 应用程序。我进去修改了应用程序中使用的一些图像,但没有更改名称。我知道如果我更改名称,它会将新图像下载到浏览器,但如果我的客户已经访问过该页面,则该图像很可能会缓存在客户端计算机上。
我想知道,有没有办法通过会话开始时的 GLOBAL.ASAX 页面来指示网站应该拉取所有信息并下载并忽略所有本地缓存数据?
这对 JS 和 CSS 文件也很有帮助。现在我根据应用程序的版本附加了一个 URL 参数...我不想对所有图像都这样做...
您可以使用 Clear-Site-Data
HTTP header。
The Clear-Site-Data header clears browsing data (cookies, storage, cache) associated with the requesting website. It allows web developers to have more control over the data stored locally by a browser for their origins.
它仍被标记为实验性的,但应该适用于所有现代浏览器。 有关详细信息,请参阅 MDN 文档中的 Clear-Site-Data。
您可以这样设置 header:
response.Headers.Add("Clear-Site-Data", "cache");
如果您想在每次发布新版本时刷新缓存,您可以将其与 cookie 结合使用并在您的 global.asax 中使用此代码:
protected void Application_BeginRequest(object sender, EventArgs e)
{
var request = ((HttpApplication)sender).Request;
var response = ((HttpApplication)sender).Response;
var versionCookie = request.Cookies["version"];
if (versionCookie == null)
{
versionCookie = new HttpCookie("version");
versionCookie.Expires = DateTime.Now.AddYears(5);
}
if (versionCookie.Value != currentVersion)
{
versionCookie.Value = currentVersion;
response.SetCookie(versionCookie);
response.Headers.Add("Clear-Site-Data", "cache");
}
}