Проблема с кэшированием файлов .JS в веб-приложении ASP.NET - PullRequest
0 голосов
/ 03 мая 2019

У нас есть веб-приложение ASP.NET. В этом случае для решения проблемы с кэшированием .css мы используем следующий код в PreRender в BasePage:

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». Есть ли способ отобразить все файлы .js, добавленные на конкретной странице .aspx, с помощью кода позади. я хочу обработать это где-нибудь, как вышеупомянутый код, который я использовал в pre handle.

Кто-нибудь еще сталкивался с подобным сценарием? Все предложения очень ценятся.

Спасибо.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...