Синхронизация ETag и Last-Modified
Синхронизация ETag и Last-Modified
Проблема ETag состоит в том, что обычно они используют атрибуты, специфичные в пределах одного сервера. ETag не совпадут, если браузер загрузит компонент страницы с одного сервера и попробует проверить его с другим сервером (у которого время изменения файла и(ли) номер блока на жестком диске для данного файла отличаются от первого) — ситуация очень распространенная, если вы используете кластер для обработки запросов. По умолчанию и Apache, и IIS включают в ETag такие данные, которые вряд ли дадут положительный результат при проверке на актуальность компонента на разных серверах.
Apache 1.3 и 2 генерирует ETag в формате inode-size-timestamp. Даже если один и тот же файл на разных серверах лежит в одной и той же папке, имеет те же права, размер и время, номер его иногда будет отличаться от сервера к серверу.
IIS 5.0 и 6.0 имеют похожий формат ETag: Filetimestamp:ChangeNumber. ChangeNumber — внутренняя переменная IIS для отслеживания изменений в конфигурации самого IIS, и нет гарантии, что эта переменная будет одинакова на всех серверах, обслуживающих веб-сайт.
В результате ETag, которые сгенерирует Apache или IIS для одного и того же файла, будут отличаться на разных серверах. Если ETag не будут совпадать, пользователь не будет получать маленький и быстрый ответа со статус-кодом 304 — собственно, ради чего ETag и разрабатывался. Взамен он будет получать стандартный код ответа 200 и далее весь запрошенный компонент.
Если сайт находится только на одном сервере, это не будет большой проблемой. Но если вы используете несколько серверов с Apache или IIS, устанавливающие ETag в соответствии с настройками по умолчанию, пользователи будут дольше загружать страницы, на серверах будет большая загрузка, нежели могла бы, вы будете тратить больше трафика, а прокси-серверы не будут кэшировать этот контент так, как хотелось бы. Даже если заголовок Expires будет установлен в далекое будущее, вам все равно будет приходить условный GET-запрос, когда пользователь перезагрузит страницу.
Если вы не получаете всех преимуществ, которые предоставляет ETag, тогда лучше совсем отключить его. Тег Last-Modified позволяет проверять актуальность компонента на основании его времени изменения, а отключение ETag даст возможность уменьшить заголовки запроса и ответа. Если вы используете Apache, просто добавьте строку
FileETag none
в конфигурационный файл сервера.
Более 800 000 книг и аудиокниг! 📚
Получи 2 месяца Литрес Подписки в подарок и наслаждайся неограниченным чтением
ПОЛУЧИТЬ ПОДАРОКЧитайте также
Синхронизация куч
Синхронизация куч В NT для синхронизации доступа к кучам (глава 5) предусмотрены две функции — HeapLock и HeapUnlock. В каждой из этих функций единственным аргументом является дескриптор. Эти функции удобно применять в тех случаях, когда используется флаг HEAP_NO_SERIALIZE, или когда
Синхронизация и параллелизм
Синхронизация и параллелизм Ядро подвержено состояниям конкуренции за ресурсы (race condition). В отличие от однопоточной пользовательской программы, ряд свойств ядра позволяет осуществлять параллельные обращения к ресурсам общего доступа, и поэтому требуется выполнять
3.3. Last-Modified и ETag
3.3. Last-Modified и ETag Давайте рассмотрим, какие существуют альтернативы прямому ограничению повторных загрузок ресурсов со стороны сервера и сохранению их в пользовательском
Last-Modified
Last-Modified Дополнительно к заголовку Cache-Control, который предупреждает браузер, что последний может не запрашивать исходный документ с сервера некоторое время, будет полезно проверять версию ресурса каждый раз при запросе. Например, нам нужно, чтобы браузер пользователя
ETag
ETag ETag (англ. Entity Tags — тэги сущностей) — механизм, который используют браузеры и веб-серверы, чтобы определить, является ли объект, находящийся в кэше браузера, таким же, как соответствующий объект на сервере. Теги сущностей являются почти полной аналогией Last-Modified заголовка
Синхронизация
Синхронизация Иногда очень сложно отказаться от работы со старыми программами. По разным причинам – многие «прикипели» к интерфейсу любимого электронного календаря, где-то та или иная программа является корпоративным стандартом… Но это совсем не значит, что от
Синхронизация
Синхронизация Для того чтобы фотографии любого вашего альбома прямо из Picasa появились в Интернете на сервисе Picasa Web Albums, необходимо совершить всего два простых действия. Во-первых, щелкнуть на ссылке «Веб-альбомы» над строкой поиска и ввести данные своей учетной записи
11.2.7. Синхронизация файлов
11.2.7. Синхронизация файлов Когда программа пишет данные в файл, обычно они сохраняются в кэше ядра до тех пор, пока оно не выполнит запись на физический носитель (такой как жесткий диск), но ядро возвращает управление программе сразу после того, как данные скопируются в кэш.
1 Синхронизация данных
1 Синхронизация данных Итак, определимся. Вы перспективный работник успевающей компании. Вам необходимо всегда иметь при себе самые последние версии каких-то документов. Вам часто приходится изменять документы, причем на разных компьютерах. И все это вы обязаны делать
Синхронизация потоков
Синхронизация потоков Обычным требованием для многопоточных приложений является синхронизация работы нескольких потоков. Для этого в Qt предусмотрены следующие классы: QMutex, QReadWriteLock, QSemaphore и QWaitCondition.Класс QMutex обеспечивает такую защиту переменной или участка
13.2. Синхронизация потоков
13.2. Синхронизация потоков Почему необходима синхронизация? Потому что из-за «чередования» операций доступ к переменным и другим сущностям может осуществляться в порядке, который не удается установить путем чтения исходного текста отдельных потоков. Два и более потоков,
Синхронизация вызывающего потока
Синхронизация вызывающего потока Для текущей реализации Main() диапазон времени между вызовом BeginInvoke() и вызовом EndInvoke() явно меньше пяти секунд. Поэтому после вывода на консоль сообщения "В Main() еще есть работа!" поток вызова блокируется и ждет завершения существования
Синхронизация данных
Синхронизация данных Последствий большинства операций, приводящих к потере данных (случайное или намеренное удаление, форматирование или выход из строя накопителя), обычно можно избежать с помощью резервного копирования. Однако это не единственная опасность,
Синхронизация и директива critical
Синхронизация и директива critical Директива critical исключает параллельное выполнение следующего за ней оператора. {$omp critical имя} оператор; Этот оператор образует критическую секцию – участок кода, который не может выполняться одновременно несколькими потоками.Только
Синхронизация
Синхронизация При совместном использовании нескольких различных устройств важно обеспечить их полную синхронизацию. Работа всего оборудования должна опираться на одинаковую информацию о времени, а обслуживающие программы – уметь работать с разнообразными типами