Будет ли работать кеширование, если на одном из веб-серверов часы немного выключены? - PullRequest
0 голосов
/ 21 июля 2010

Говорят, что часы веб-серверов должны быть идентичны для работы заголовков Expires и Cache-Control? Это почему? Разве они не могут быть отключены на 1 секунду или несколько минут?

Если предполагается, что кэш будет работать в течение 1 года, не будет ли разница во времени на несколько минут или даже на несколько часов на одном или нескольких веб-серверах?

В документации сказано, что:

обратите внимание, что для этого [кэширования] работают все ваши серверы приложений должен вернуть те же самые метки времени. это означает, что они должны иметь свои часы синхронизированы. Если один из них дрейфует несинхронно, вы увидите разные временные метки наугад и кеш не будет работать. В этом случае браузер будет запрашивать одни и те же активы и снова даже думал, что они не менять. Вы можете использовать что-то вроде Активные HTTP-заголовки для Firefox убедитесь, что кеш действительно рабочий.

Ответы [ 2 ]

0 голосов
/ 21 июля 2010

Если вы запустите ntpd на всех ваших хостах (а вы делаете , не так ли?), Они будут более чем достаточно близки.Он имеет меньшее отношение к заголовкам, чем к контроллерам кэширования, генерирующим ?1232285206 в конце URL-адресов.Это всего лишь время эпохи Unix (секунды с 00:00:00 1 января 1970 г.), так что пребывание в течение нескольких секунд должно хорошо работать с контентом, который можно кэшировать.NTDP обычно сохраняет четверть секунды или меньше терпимости.(В серии тестов ntpdate на нескольких серверах времени мой компьютер никогда не отключался больше чем на 0,15 секунды.)

0 голосов
/ 21 июля 2010

Обратите внимание, что это специфично для Rails и только в том случае, если у вас есть несколько веб-серверов, обслуживающих данные.

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

...