Пояснение к истечению заголовка - PullRequest
1 голос
/ 11 мая 2010

У меня есть приложение joomla, работающее над Apache. Чтобы улучшить производительность сайта, мы записали файл .htaccess в корень приложения с установкой заголовка с истекшим сроком действия для всего статического содержимого. По желанию в первый раз файлы загружаются в свежем виде с 200 кодами состояния. при повторном нажатии на ту же ссылку многие файлы обслуживаются непосредственно из кэша. Мне нужно объяснение двух вещей

  1. Когда я нажимаю клавишу f5, загружается несколько файлов с кодом состояния 304, однако я ожидал, что они будут поступать напрямую из кэша, не обращаясь к серверу для заголовка состояния?

  2. Когда я закрываю браузер и снова возвращаюсь на ту же страницу, я вижу, что происходит то же самое: количество файлов загружается с кодом состояния 304, хотя я думал, что они будут загружаться непосредственно из кэша браузера?

Я понимаю, что 304 также подает файл из кэша браузера, но я хочу избежать связи заголовка между серверами, поскольку мои статические файлы никогда не изменятся. Также я хочу добавить, что мои запросы через соединение https создают любую проблему.

Ответы [ 2 ]

0 голосов
/ 12 мая 2010

Браузеры имеют алгоритмы отправки запросов на кэшированное содержимое, основанные на времени истечения. Обычно контент с заголовком в далеком будущем никогда не будет перезагружен, как вы ожидаете. Но, нажав reload или F5 игнорирует это и вызывает перезагрузку страницы всего содержимого страницы.

Чтобы проверить это, поместите курсор обратно в адресную строку (ALT-d на Win) и нажмите Enter. Это похоже на повторное посещение страницы, и браузер должен вести себя так, как вы ожидаете.

0 голосов
/ 11 мая 2010

Использование безопасного сеанса действительно может вызвать проблемы с кэшированием.

В целях безопасности многие браузеры не кэшируют данные SSL, кроме как во время сеанса SSL. Когда браузер или вкладка закрыты, кэш SSL очищается.

Firefox имеет опцию конфигурации для управления этим. Я не знаю об IE. Также возможно, что есть некоторый заголовок Cache-Control, который переопределит это поведение.

Заголовок Cache-Control, как мне кажется, HTTP / 1.1, и вы должны использовать его так же, как и Expires. Cache-Control предлагает больше возможностей для управления кешем.

...