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/

Другие вопросы по тегам