可能的重复:
App_Theme 文件夹中的 CSS 被缓存在浏览器中 https://stackoverflow.com/questions/4517281/css-in-app-theme-folder-gets-cached-in-browser
我见过 ”有什么优雅的方法可以强制浏览器重新加载缓存的 CSS/JS 文件? https://stackoverflow.com/questions/118884/what-is-an-elegant-way-to-force-browsers-to-reload-cached-css-js-files”但是答案使用了 PHP,并且没有解决 CSS 是由 ASP.Net 主题动态注入的事实。
我想我有一个快速而肮脏的解决方案。诀窍是检查页眉中的控件(例如在PreRender
阶段),找到指向 CSS 文件的链接App_Themes
文件夹并使它们动态(通过向查询字符串添加一些随机信息)。这很可能会告诉浏览器使文件的缓存版本无效。
代码:
protected void Page_PreRender(object sender, EventArgs e)
{
HtmlLink link = null;
foreach (Control c in Header.Controls)
{
if (c is HtmlLink)
{
link = c as HtmlLink;
if (link.Href.IndexOf("App_Themes/", StringComparison.InvariantCultureIgnoreCase) >= 0 &&
link.Href.EndsWith(".css", StringComparison.InvariantCultureIgnoreCase))
{
link.Href += string.Format("?t={0}", DateTime.Now.Ticks.ToString());
}
}
}
}
输出:
<link href="App_Themes/MyTheme/MyTheme.css?t=634310637798128189"
type="text/css" rel="stylesheet" />
请注意,您需要有一个<head runat="server">
在页面的标记中声明以便能够访问Header
财产(否则它将是null
).
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)