清除浏览器缓存中的所有图像

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");
    }
}