我正在开发一个使用 ASP.NET 主题的网站。我遇到的问题是我已经更新了 CSS 文件,但原始文件被用户的浏览器保留。我想知道是否有办法强制浏览器获取最新的 CSS 文件。
主题由类似于以下的代码设置:
private void SetPageTheme()
{
Page.Theme = "ClientA_Theme";
}
我看过类似问题的其他答案,这些答案建议我将版本号附加到 CSS 文件,例如/CssFile.css?v=1.2.3
有没有办法用 ASP.NET 主题来做到这一点?
最佳答案
我遇到了类似的问题;您可以设置 IIS 以添加 content-expiration header用于 CSS 文件,因此它们永远不会被缓存,或者您可以使用此 SO 问题中提供的解决方案 here
您还可以向每个页面添加一个方法来遍历 page.header 中的控件(甚至可能在您的 Master.Page 中!)来执行以下操作:
protected override void OnPreRender(System.EventArgs e)
{
foreach (Control link in Page.Header.Controls)
{
if (link is HtmlLink)
{
HtmlLink cssLink = link as HtmlLink;
//Check if CSS link
if (cssLink.Attributes["type"].Equals("text/css", StringComparison.CurrentCultureIgnoreCase))
{
if (cssLink.Attributes["href"].Equals(String.Format("~/App_Themes/{0}/{0}.css", Page.Theme), StringComparison.CurrentCultureIgnoreCase))
{
//perhaps add the version of your app here.
cssLink.Attributes["href"] += "?v1.1";
}
}
}
}
base.OnPreRender(e);
}
另一种技术是在主题名称中包含版本号 - 例如 MyTheme1_1 或类似名称。然后每个版本都会从"new"url 加载内容,因此应该为每个用户再次请求内容。显然,这是更多的工作,但每个版本应该一次,并且没有您在下面提到的开销。
关于asp.net - 使用 ASP.NET 主题时如何强制刷新 CSS?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8398610/