Совместное использование НТТР-ответов несколькими запросами

На практике лишь небольшая часть ресурсов Web-сайта используется при обработке большинства запросов. Сервер может уменьшить издержки на обработку этих запросов, сохранив часто запрашиваемые ресурсы в оперативной памяти. Предположим, что сервер получает запрос на ресурс http://www.bar.com/foo.html, представляющий собой статический файл. Чтобы обработать запрос, сервер должен открыть и прочитать файл, соответствующий этому URL. При чтении файла данные копируются с диска в оперативную память. Обращение к диску увеличивает пагрузку системы и приводит к задержке при обработке запроса. В идеале следующий запрос на /foo.html не должен вызывать повторное открытие и чтение файла. Вместо этого сервер может передать данные непосредственно из оперативной памяти. Это называется кэшированием на стороне сервера, поскольку данные с диска кэшируются в оперативной памяти сервера.

Кэширование ресурса на Web-сервере несколько отличается от кэширования в браузере или в прокси-сервере. С целью увеличения производительности сервер храпит данные в оперативной памяти. Серверу необходимо убедиться, что копия в оперативной памяти совпадает с данными, хранящимися на диске. Если содержимое файла изменяется, сервер не должен передавать копию, хранящуюся в оперативной памяти. Чтобы избежать передачи устаревшего ответа, сервер может проверить время последней модификации файла на диске до возврата кэшированной копии; если файл был изменен, сервер может удалить кэшированную копию из оперативной памяти. Альтернативой является уведомление сервера системой о том, что файл был модифицирован. При этом сервер удаляет кэшировапное содержимое из памяти. В данном случае сервер может посылать ответ запросившему клиенту без явиой проверки времени последней модификации файла.

Кроме кэширования статических файлов, Web-cepвep может также сохранять в оперативной памяти динамически генерируемые ответы. Рассмотрим Web-сайт, который предоставляет пользователю возможность вводить строку и получать гиперссылки на Web-страницы, содержащие ее. Мпогие запросы пользователей содержат одну и ту же строку для поиска. Вместо того чтобы обрабатывать каждый запрос независимо, сервер может сохранить результаты выполнения таких запросов в оперативной памяти. Сервер может обработать результаты, соответствующие кэшированному запросу, вместо того, чтобы вызывать сценарий, взаимодействующий с внутренней базой данных. Результат вынолпения запроса может состоять из нескольких Web-страниц, и пользователь может выбрать вторую страницу после того, как просмотрит первую. Сервер может сформировать вторую страницу на основе кэшированпых результатов выполнения первого запроса вместо того, чтобы генерировать содержимое второй 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