ASP.NET Web应用程序中的.JS文件缓存问题

时间:2019-05-03 09:53:40

标签: c# asp.net event-handling browser-cache

我们有一个ASP.NET Web应用程序。在此,我们为了处理.css缓存问题,在BasePage的PreRender中使用以下代码,

if (Page.Header != null)
{
    foreach (Control currentLlink in Page.Header.Controls)
    {    
        if (currentLlink is HtmlLink)
        {
            HtmlLink cssLink = currentLlink as HtmlLink;
            if (cssLink.Attributes["type"].ToLower().Equals("text/css", StringComparison.CurrentCultureIgnoreCase))
            {
                if (cssLink.Attributes["href"].Contains(".css"))
                {
                    cssLink.Attributes["href"] += "?v=" + ConfigurationManager.AppSettings["CSSFileVersion"];
                }
            }
        }
    }
    base.OnPreRender(e);
}

现在我们有一个新要求来处理与上述相同的.js文件。我已经按照以下方式处理了

if (Page.Header != null)
{
    foreach (Control currentLlink in Page.Header.Controls)
    {
        if (currentLlink is LiteralControl)
        {
            LiteralControl jsLink = currentLlink as LiteralControl;

            if (((System.Web.UI.LiteralControl)currentLlink).Text.ToLower().Contains(".js"))
            {
                ((System.Web.UI.LiteralControl)currentLlink).Text = ((System.Web.UI.LiteralControl)currentLlink).Text.ToLower().Replace(".js", ".js?v=" + ConfigurationManager.AppSettings["JSFileVersion"]);
            }
        }
    }
}

使用以上代码,我们达到了上述要求。但是,某些.js文件不会使用此文件替换。某些.js链接甚至没有列为“ LiteralControl”。有没有一种方法可以通过后面的代码显示添加到特定.aspx页中的所有.js文件。我想像在预处理中使用上面的代码一样,在某个地方处理它。

还有其他人遇到过这样的情况吗? 非常感谢所有建议。

谢谢。

0 个答案:

没有答案