2010-05-30 1 views
5

Представьте себе следующий случай использования:HTTP-заголовки: Last-Modified - как он может имитировать загрузку сервера?

Я использую запрос AJAX для получения некоторой информации о Item и использовать этот URL: http://domain/items/show/1

В моей базе данных все элементы имеют поле под названием modified_at, где мы храним в тот момент, когда этот элемент был изменен ранее.

Как может Last-Modified HTTP-заголовок сервера в ответ может минимизировать запросы на загрузку/уменьшение/увеличить отзывчивость, если нам нужно обрабатывать этот запрос каждый раз на стороне сервера? Похоже, мы не уменьшаем количество HTTP-запросов с этим ответом, и мы не уменьшаем нагрузку на сервер.

Кому это нужно в любом случае?

Я прав, что он используется в основном для экономии полосы пропускания?

ответ

3

Целью является сохранение полосы пропускания, а не на вашем сервере, а на клиенте. Неиспользуемые запросы AJAX, скорее всего, заставят пользовательский интерфейс невероятно медленно для ваших посетителей, не имея необходимости передавать данные снова и снова, резко улучшает производительность в браузере клиента.

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

1

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

Однако, если у вас есть механизм для сопоставления запроса uri с датой истечения срока действия без использования базы данных, вы можете заметить большее улучшение времени ответа и сохраненных ресурсов сервера.

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

См. Этот вопрос для получения дополнительной информации об осуществлении 304 ответов. Is my implementation of HTTP Conditional Get answers in PHP is OK?

 Смежные вопросы

  • Нет связанных вопросов^_^