Кэш истекает управление с последним изменением

Проблема в if eachenv=="DEV01" or "DEV02".

Вы не можете проверить, как это. результат будет True, если eachenv=="DEV01" в противном случае результат будет "DEV02", а не False. вы должны пойти так:

if eachenv in ["DEV01", "DEV02"]:

также измените for eachenv in envnames: на:

for eachenv in envnames.readlines():
15
задан ire_and_curses 25 March 2011 в 01:27
поделиться

3 ответа

Expires* директива с "модификацией", поскольку ее основа относится ко времени изменения файла на сервере. Таким образом, если Вы установите, скажем, "модификацию плюс 2 часа", любой браузер, который запрашивает содержание в течение 2 часов после того, как файл изменяется (на сервере), будет кэшировать то содержание до спустя 2 часа после времени изменения файла. И браузер знает, когда то время - то, потому что сервер отправляет Expires заголовок с надлежащим временем истечения срока.

Позволяют мне объяснить с примером: скажите, что Ваша конфигурация Apache включает строку

ExpiresDefault modification plus 2 hours

, и у Вас есть файл index.html, к которому ExpiresDefault директива относится на сервере. Предположим, что Вы загружаете версию index.html в 9:53 GMT, перезаписывая предыдущее существующее index.html (если был один). Таким образом, теперь время изменения [1 110] является 9:53 GMT, Если бы Вы работали ls -l на сервере (или dir в Windows), то Вы видели бы его в списке:

-rw-r--r--  1 apache apache    4096  Feb 18 09:53 index.html

Теперь, с каждым запросом, Apache отправляет Last-Modified заголовок со временем последнего изменения файла. Так как у Вас есть тот ExpiresDefault директива, она также отправит Expires заголовок со временем, равным времени изменения файла (9:53) плюс два часа. Таким образом, вот часть того, что видит браузер:

Last-Modified: Wed, 18 Feb 2009 09:53:00 GMT
Expires: Wed, 18 Feb 2009 11:53:00 GMT

, Если временем, в которое браузер выполняет этот запрос, является до 11:53 GMT, браузер будет кэшировать страницу, потому что это еще не истекло. Таким образом, если пользователь сначала посетит страницу в 11:00 GMT и затем перейдет к той же странице снова в 11:30 GMT, то браузер будет видеть, что его кэшированная версия все еще допустима, и не будет (или скорее быть позволенным не), делают новый Запрос HTTP.

, Если пользователь переходит к странице в третий раз в 12:00 GMT, браузер видит, что его кэшированная версия теперь истекла (это после 11:53), таким образом, это пытается проверить страницу, отправляя запрос к серверу с заголовком If-Modified-Since. 304 (не измененный) ответ без тела будет возвращен, так как дата страницы не была изменена, так как это сначала подавалось. Так как дата окончания срока действия передала - страница является 'устаревшей' - запрос проверки будет выполнен в каждый последующий раз, когда страницу посещают до сбоев проверки.

Теперь, давайте притворимся вместо этого загрузку новой версии страницы в 11:57. В этом случае попытка браузера проверить старую версию страницы в 12:00 перестала работать, и она получает в ответе, наряду с новой страницей, этими двумя новыми заголовками:

Last-Modified: Wed, 18 Feb 2009 11:57:00 GMT
Expires: Wed, 18 Feb 2009 13:57:00 GMT

(Время последнего изменения файла становится 11:57 на загрузку новой версии, и Apache вычисляет время истечения срока как 11:57 + 2:00 = 13:57 GMT)

, Проверка (использующий более свежую дату) не будет требоваться теперь до 13:57.

(Отмечают, конечно, что много других вещей отправляются наряду с этими двумя заголовками, которые я упомянул выше, я просто обрезал все остальные для простоты)

37
ответ дан 1 December 2019 в 00:54
поделиться

Сервер отправляет заголовок, такой как: "Last-Modified: Wed, 18 Feb 2009 00:00:00 GMT". Кэш ведет себя или на основе этого заголовка или на основе время доступа.

Говорят, как ли содержание, ожидают, будет обновляться каждый день, то Вы хотите, чтобы оно истекло "модификация плюс 24 часа".

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

4
ответ дан 1 December 2019 в 00:54
поделиться

Мое понимание - то, что модификация просит, чтобы браузер основывал время кэша на основе значения Последнего-Modificatied HTTP-заголовка. Так, модификация плюс 2 часа была бы Прошлым-Modificatied разом + 2 часа.

0
ответ дан 1 December 2019 в 00:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: