У меня была похожая проблема; вы можете настроить IIS для добавления заголовка истечения срока действия контента для файлов CSS, чтобы они никогда не кэшировались, или вы можете использовать решение, представленное в этом вопросе SO здесь
Вы также можете добавить метод для каждой из ваших страниц, чтобы пройти через элементы управления в вашем 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 или аналогичный. Каждый выпуск будет загружать контент из «нового» URL, и, следовательно, контент должен запрашиваться снова для каждого пользователя. Очевидно, что это больше работы, но она должна выполняться один раз в каждом выпуске и не имеет накладных расходов, о которых вы упомянули ниже.