我有一个包含图像的ASP.NET C#应用程序。我进去并修改了应用程序中使用的一些图像,但没有更改名称。我知道如果更改名称,它将把新图像下载到浏览器,但是如果我的客户已经访问了该页面,则该图像很可能会缓存在客户端计算机上。
我想知道,是否有办法在会话开始时浏览GLOBAL.ASAX页面,以指示网站应提取所有信息并下载并忽略所有本地缓存的数据?
这对于JS和CSS文件也将有所帮助。现在,我会根据应用程序的版本添加一个URL参数...我不愿意对所有图像执行此操作...
您可以使用Clear-Site-Data
HTTP标头。
Clear-Site-Data标头清除与请求网站关联的浏览数据(cookie,存储,缓存)。它使Web开发人员可以更好地控制浏览器在本地存储的数据来源。
它仍然被标记为实验性的,但是应该可以在所有现代浏览器中使用。有关更多信息,请参见MDN文档中的Clear-Site-Data。
您可以这样设置标题:
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");
}
}
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句