Кэширование в браузере

В этом разделе мы вкратце остановимся на кэшировании в Web применительно к браузерам. Кэш — это локальное храпилище данных, которое может использоваться для уменьшения времени ожидания пользователем ответа от сервера. В браузере обычно применяются два вида кэширования: с использованием памяти выполняющегося процесса и с использованием дискового пространства, выделяемого для кэширования. Если сеть сильно загружена или если Web-сервер активно используется, получение ресурсов с сайта может запять длительное время. Поскольку большинство пользователей часто посещают одпи и те же Web-сайты, браузеру выгодно кэшировать последние загруженные страницы. Если пользователь попытается вернуться к Web-странице, которую он недавно посетил, страница может быть отображена из кэша браузера. Привычка пользователей возвращаться к недавно просмотренной странице столь распространена, что в большинстве браузеров предусмотрена кнопка Back (Назад), дающая возможность пользователю возвращаться к последним запрошенным страницам.

Предположим, что одно из встроенных изображений ресурса /foo.html, скажем, /fool.gif, было сохранено в кэше браузера. Чтобы повторно вывести изображение, браузеру не нужно выполнять отдельный запрос на пего. Поскольку отдельный HTTP-запрос не нужен, пет необходимости и в запросе к DNS на преобразование доменного имени исходного сервера в IP-адрес, в устаповлепии ТСР-соедипения для отправки HTTP-запроса и в передаче потока байтов, соответствующих изображению /fool.gif, через сегь. Все это приводит к значительному сокращению времени ожидания на стороне пользователя — интервала времени между щелчком пользователя на гиперссылке и началом отображения страницы в окне браузера.

Однако существует возможность, что ресурс был нзмепен с момента его кэширования. Браузеру может понадобиться проверить, что кэшированный ответ по-прежнему актуальный, сопоставив кэшировапную копию с текущей копией на исходном сервере. Подобная проверка получила название проверки актуальности кэша. Если версия на исходном сервере более новая, то кэшированная коиия устарела. Например, ресурс /fool.gif мог измениться с момепта его последней загрузки.

Считается, что кэш поддерживает актуальность кэшированных ресурсов, если при этом делается так, что кэшировапные ресурсы являются актуальными. Кэш, который осуществляет проверку кэшированной версии на соответствие версии на исходном сервере каждый раз, когда выполняется запрос на кэшированный ресурс, поддерживает высокую степепь актуальности кэша. Если кэш использует эвристический подход для определения, по-прежнему ли считать актуальным кэшированный ответ, то поддерживается низкая степень актуальности кэша. В последнем случае ответы могут возвращаться без сопоставления с ресурсом на исходном сервере. Для поддержания актуальности кэшированиых ресурсов используется несколько эвристических алгоритмов. Проверка кэшированных ресурсов может выполняться периодически через фиксированные интервалы времени, либо через меняющиеся интервалы времени в зависимости от атрибутов ресурса (размер, время последней модификации, тип содержимого и т.д.). Решение, следует ли возвращать кэшированный ресурс, принимается в зависимости от стратегии проверки актуальности, используемой браузером в данный момент. Браузер может решить, что изменение изображений происходит не так часто, как изменение текстовых ресурсов, и использовать кэшированное значение без проверки его актуальности с помощью обращения к исходному серверу. Хотя браузер может и не предполагать, что ресурс /foo.html по-прежпему актуален, оп вполне может допустить, что изображение /fool.gifB последнее время не менялось. При этом возникает возможность возврата устаревшего ресурса в качестве ответа, если браузер поддерживает низкую степень актуальности кэша.

Пользователь может обойти эвристическую проверку достоверности кэша браузером и принудить браузер отправлять запрос непосредственно на исходный сервер. Например, в браузере Netscape это делается с помощью щелчка на кнопке Reload при предварительно нажатой клавише Shift.

При записи в кэш ответа исходного сервера в пего включается значение «времени последней модификации», указывающее, когда ресурс был в последний раз модифицирован на исходном сервере. Кэш будег хранить эго значение и включать его в заголовок запроса как часть процесса проверки актуальности. Если первоначальный ответ сервера не содержит времени последней модификации, кэш присваивает значение эвристически. Например, кэш может присвоить значение времени, соответствующее времени получения ответа. Исходный сервер сравнивает текущее время последней модификации ресурса со значением для кэшировапного ресурса, чтобы дать знать, если ресурс был изменен.

Если запрашиваемый ресурс не содержится в кэше браузера, запрос передается серверу, который может быть или не быть исходным Web-сервером.

Источник: Web-протоколы. Теория и практика. — M.: ЗАО «Издательство БИНОМ», 2002 г. – 592 c.: ил.

Вы можете следить за любыми ответами на эту запись через RSS 2.0 ленту. Вы можете оставить ответ, или trackback с вашего собственного сайта.

Оставьте отзыв

XHTML: Вы можете использовать следующие теги: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

 
Rambler's Top100