<分区>
Possible Duplicate:
CSS in App_Theme folder gets Cached in Browser
我见过“What is an elegant way to force browsers to reload cached CSS/JS files?”,但那里的答案使用 PHP,它没有解决 CSS 由 ASP.Net 主题动态注入(inject)这一事实。
<分区>
Possible Duplicate:
CSS in App_Theme folder gets Cached in Browser
我见过“What is an elegant way to force browsers to reload cached CSS/JS files?”,但那里的答案使用 PHP,它没有解决 CSS 由 ASP.Net 主题动态注入(inject)这一事实。
最佳答案
我想我有一个快速而肮脏的解决方案。诀窍是检查页眉中的控件(例如在 PreRender
阶段),找到指向 App_Themes
下的 CSS 文件的链接。文件夹并使它们动态化(通过向查询字符串添加一些随机信息)。这很可能会告诉浏览器使文件的缓存版本无效。
代码:
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
)。
关于asp.net - 使用 Asp.Net 主题时如何强制浏览器重新加载缓存的 CSS 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4736867/