Кэширование Ajax

В статье "Make Ajax Cacheable" автор приводит ещё один метод улучшения работы сайта. Он рекомендует делать Ajax кэшируемым, что позволит браузерам открывать адресные книги почтовых клиентов из кэша, а не загружать новую версию, тем самым заставляя пользователей ждать.

Одним из упомянутых преимуществ Ajax является то, что он предоставляет мгновенную обратную связь с пользователем, потому что запрашивает информацию асинхронно с веб-сервера. Однако, использование Ajax не гарантирует, что пользователю не придётся сидеть сложа руки в ожидании получения JavaScript и XML-ответов. Придётся ли пользователю ждать, или нет, во многих приложениях зависит от того, как используется Ajax. Например, в почтовом веб-клиенте пользователю придётся ждать результатов Ajax-запроса, чтобы найти все сообщения, удовлетворяющие критерию его поиска. Важно помнить, что "асинхронный" не означает "мгновенный".

Для повышения производительности, важно оптимизировать Ajax-ответы. Наиболее продуктивный способ повышения производительности Ajax состоит в необходимости сделать его ответы кэшируемыми, о чём говорилось в статье Добавление заголовков Expires или Cache-Control. Другие правила также распространяются на Ajax:

Давайте посмотрим на пример. Почтовый клиент Web 2.0 может использовать Ajax, чтобы загрузить адресную книгу пользователя для автозаполнения. Если пользователь не вносил изменений в свою адресную книгу со времени последнего использования почтового веб-приложения, то информация об адресной книге могла бы быть взята из кэша, если Ajax-ответы были сделаны кэшируемыми и заголовок Expires или Cache-Control установлены на далёкое будущее. Браузер должен быть информирован, использовать ли предыдущую версию адресной книги из кэша, или загрузить новую версию. Это можно сделать, добавив timestamp адресной книги, изменённой последний раз пользователем в URL Ajax, например: &t=1190241612. Если адресная книга не была изменена со времени последней загрузки, timestamp будет тот же самый, и адресная книга будет загружена из кэша браузера, без дополнительного HTTP-запроса. Но если пользователь изменил свою адресную книгу, то timestamp будет отличаться от того, который в кэш, поэтому браузер запросит новую версию адресной книги.

  Даже если ваши Ajax-ответы создаются динамически, и могут применяться только для одного пользователя, они всё равно могут быть сохранены в кэше. Поступая таким образом Вы сможете добиться быстрой работы своих Web 2.0-приложений. 

Оригинал статьи на developer.yahoo.com

Перевод КОМТЕТ komtet.ru