CSS в папке App_Theme становится кэшированным в браузере
Таблица стилей в папке App_Theme кэшируется в браузере. Какой должен быть подход? так что при каждом новом развертывании браузер должен использовать последние таблицы стилей, а не кэшированные в браузере.
Это происходило и для других CSS (которые не находятся в папке темы), поэтому использовал пользовательский элемент управления, как указано в ссылке
http://blog.sallarp.com/asp-net-automatic-css-javascript-versioning/
Как это можно сделать для CSS в папке Theme?
Изменить: название темы упоминается в web.config, как указано ниже. так что это не только тег HTML ссылки, который я решил с помощью метода, упомянутого в ссылке.
<pages styleSheetTheme="Default">
<controls>
</controls>
</pages>
5 ответов
Я тоже сталкивался с этим, и решение, которое я нашел, состоит в том, чтобы добавить версию к вашему имени файла CSS, не очень красивую, но без отключения кэша в IIS, я не мог придумать другого пути.
Переименуйте файл CSS в mycss-V1.0.css, что заставит браузеры вашего пользователя перезагрузить CSS
При развертывании веб-приложения укажите номер версии в пути к темам. Например, App_Themes/Default/v1.2.0.4321/
, где v1.2.0.4321
это папка, добавленная при развертывании для версии 1.2.0.4321. Это сохраняет как имя темы (например, "По умолчанию"), так и имена файлов, что значительно упрощает управление исходным кодом и ссылки на пути. ASP.NET загружает все файлы CSS в текущей папке темы независимо от вложенных папок. Это решает проблему не только со ссылками на файлы CSS, но и с изображениями, на которые ссылаются файлы CSS (например, background-image).
Кроме того, длительность кэша браузера для App_Themes может быть увеличена для повышения производительности при одновременном обновлении всех файлов темы при следующем обновлении веб-приложения.
Добавьте это к <configuration>
раздел Web.Config для кэширования браузеров на 120 дней.
<location path="App_Themes">
<system.webServer>
<staticContent>
<clientCache cacheControlMode="UseMaxAge" cacheControlMaxAge="120.00:00:00" />
</staticContent>
</system.webServer>
</location>
Кэш браузера основан на сроке действия, установленном в заголовке ответа или настройке браузера.
Существуют временные рамки, когда мы внедряем CSS и хотим немедленно передать их пользователю, но не можем создать версию файла css, на которую ссылается файл asp (например, style.css?v2
).
В этих случаях мы можем добавить измененные / новые классы стилей только в конкретном файле CSS в раздел Head файла aspx. Он не создает никаких переопределений стилей и исправляет проблему.
Может также отправить метку времени в качестве параметра get.
НАПРИМЕР:
http://mysite.com/theme/dir/style.css?id=24033957203712
где 24033957203712 - отметка времени.
Вы можете поставить временную метку имени файла css или использовать htaccess для установки пределов кэширования, как описано здесь http://css-tricks.com/can-we-prevent-css-caching/