ASP.NET Укажите, какие файлы следует кэшировать

Я разрабатываю веб-сайт в ASP.NET и использую различные фреймворки/библиотеки javascript. Различные файлы, принадлежащие этим платформам/библиотекам, редко изменяются, поэтому нет необходимости обновлять эти файлы после их отправки в клиентский браузер (по крайней мере, не каждый раз при обслуживании страницы).

Я вижу, что объект HttpContext можно как-то использовать, что я могу установить срок действия содержимого для файлов/папок в IIS или, возможно, настроить какое-то кэширование в файле web.config.

1. Какова наилучшая практика / какой подход я должен использовать?

Если истечение срока действия контента в IIS работает, то это просто здорово (и просто). Но во время разработки я использую сервер разработки ASP.NET, который не взаимодействует с внешним IIS, поэтому во время разработки не достигается прирост производительности :(

2. Как я могу использовать кеш здесь (в зависимости от вопроса 1)?

Я хотел бы изменить этот вопрос, чтобы использовать его в качестве темы «это то, как это делается» для дальнейшего использования для меня и других.


person Chau    schedule 14.01.2010    source источник
comment
Вы случайно не используете Windows Vista с включенным IPv6, это приводит к тому, что веб-сервер разработки работает ужасно медленно в Firefox.   -  person Jonas Høgh    schedule 14.01.2010
comment
@Jonas: Я использую Windows XP Pro, и производительность в IE такая же.   -  person Chau    schedule 14.01.2010
comment
Ok. В любом случае, если бы я был на вашем месте, я бы разрабатывал для вашего локального IIS вместо сервера разработки, если вы хотите сосредоточиться на конкретных настройках сервера, таких как кэширование во время разработки. Это должно быть более гибким и давать вам меньше расхождений между настройками разработки и производства.   -  person Jonas Høgh    schedule 15.01.2010


Ответы (2)


Параметры кеша в HttpContext управляют только тем, как кешируется страница aspx, а не кешированием файлов, которые включает браузер (javascript, css, изображения...).

Браузер кэширует файлы javascript по умолчанию, и это практически одинаково, независимо от того, работаете ли вы на сайте локально или в реальном времени. Обычно вам нужно нажать Ctrl+F5 или очистить кеш, если вы вносите изменения в скрипт, чтобы браузер загрузил новую версию.

Таким образом, вам вообще ничего не нужно делать, браузер уже кэширует файлы.

person Guffa    schedule 14.01.2010
comment
Я даже подозревал, что то, что вы говорите, правда. Но когда я смотрю на вкладку NET в FireBug, он утверждает, что использует более 10 секунд для получения файла javascript + 1 МБ - и это локально. В заголовке ответа для этого файла указано cache-control: private, а в заголовке запроса указано cache-control: max_age=0. - person Chau; 14.01.2010

Я думаю, что если вы ищете кэширование файлов, то это нужно делать на стороне IIS. Вы можете попробовать расширение YSloy (от Yahoo) с помощью FireBug. Это очень хорошо и должно использоваться как лучшая практика. Надеюсь, это будет полезно :)

person Anil Namde    schedule 14.01.2010
comment
YSlow теперь включен в мои инструменты разработчика. Что касается файлов javascript и кеширования, YSlow жалуется, что ни один из них не имеет даты истечения срока действия в далеком будущем, что соответствует отсутствию кеширования, которое я испытываю. - person Chau; 14.01.2010