Почему моя страница не кэшируется? - PullRequest
1 голос
/ 29 ноября 2010

Это просто злит меня.Я не могу понять, почему все ресурсы на моей странице запрашиваются КАЖДЫЙ раз.

Например, мой site.css возвращает следующие заголовки (используя fiddler):

HTTP/1.1 200 OK
Server: ASP.NET Development Server/9.0.0.0
Date: Mon, 29 Nov 2010 17:36:21 GMT
X-AspNet-Version: 2.0.50727
Content-Length: 9093
Cache-Control: public, max-age=2592000
Expires: Wed, 29 Dec 2010 17:36:21 GMT
Last-Modified: Mon, 08 Nov 2010 17:20:16 GMT
Content-Type: text/css
Connection: Close

Но каждый раз, когда я нажимаю кнопку обновления, я вижу все ресурсы (css, js, изображения) получать повторно.У меня есть контроль над заголовками, возвращаемыми для всех этих ресурсов, но я еще не понял этого.

Я даже отладил свое приложение ASP.NET, и HttpModule определенно запрашивается для ресурсовснова.

Может кто-нибудь дать мне представление о том, что делать?

РЕДАКТИРОВАТЬ: Хорошо, я удалил must-revalidate, proxy-revalidate из заголовков, и это приближает меня к тому месту, где я хочу быть, теперь, когда я нажимаю назад, он все еще запрашивает мои файлы CSS / JS, когда я нажимаю назад.1015 *

Что еще я могу сделать, чтобы избежать этого?

Ответы [ 2 ]

4 голосов
/ 30 ноября 2010

Следующие ссылки могут быть вам полезны.

Различия в поведении перезагрузки между FF и IE

http://blog.httpwatch.com/2008/10/15/two-important-differences-between-firefox-and-ie-caching/

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

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

Кнопка «Назад» (поведение браузера)

И, наконец, разбивка поведения f5 / ctrl f5, click, shift click и т. Д. Между браузерами: Какие запросы генерируют обновления браузеров "F5" и "Ctrl + F5"?

2 голосов
/ 30 ноября 2010

Если вы обрабатываете запросы в своем собственном модуле - что, по-видимому, имеет место - и запрос содержит заголовок If-Modified-Since, вы можете использовать его, чтобы определить, следует ли ответить 200 и снова отправить весь ресурс, или просто отправьте 304 и пропустите отправку содержимого js / css / etc.

Кроме этого, ожидайте, что браузеры будут повторно запрашивать ресурсы при нажатии F5 / Refresh. Просто вы можете пропустить отправку всего js / css / etc и вернуть 304, если все в порядке. Кроме этого, ответ @ Chris охватывает почти все остальное.

Какие заголовки запроса вы видите, когда наносите ответный удар?

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