Пока я знаю, что могу разделять статическое и динамическое содержимое с помощью AJAX, поэтому, если в сообщении блога есть обновление комментария, статью не нужно повторно загружать (это будет 304), только комментарии. Теперь я думаю о сохранении извлеченного динамического контента, чтобы в следующий раз запрашивать только новые комментарии. Есть ли способ сделать это, не полагаясь на Flash / Gears / HTML5Storage или другие плагины?
EDIT:
Допустим, раздел комментариев к статье выглядит так:
<div class='comments' id='comments'>
<a name='comments'></a>
<h4>43 comments:</h4>
<dl id='comments-block'></dl>
<p class='comment-footer'>
<a href='http://example.org/postcomment' onclick=''>Post a Comment</a>
</p>
</div>
, при котором вызов AJAX для получения комментариев добавит их к <dl id='comments-block'>
, который содержит следующий фрагмент:
<div class='comments-singleblock'>
<dt class='comment-author' id='comment-5378479254070788764'>
<a name='comment-5378479254070788764'></a>
Anonymous coward
<span class='comment-timestamp'>
<a href='#comment-5378479254070788764' title='comment permalink'>
5 February 2012 16:52
</a>
</span>
</a>
</dt>
<dd class='comment-body'>
<p>
Your lorum is my ipsum, the dolor is sit amet us.
</p>
</dd>
<dd class='comment-footer'>
Which eternal lies, that is not death.
</dd>
</div>
, который можно кэшировать. Последующие вызовы AJAX должны возвращать только новое содержимое, добавляя к вышеуказанному.
Теперь, когда статья загружена, логика такова
- Первый вызов комментариев AJAX без отметок времени: извлечение всех комментариев до текущей отметки времени A. Это кэшируется.
- Время проходит в новой отметке времени B, отправляет запрос на сервер для комментариев после отметки времени A. Этот вызов может кэшироваться, но бессмысленно, поскольку URL-адрес запроса никогда не используется повторно.
- Клиент теперь обновил комментарии до отметки времени B. Но кэшируется только содержимое до отметки времени A.
- Клиент обновляет статью, которая запрашивает первый запрос на комментарий без отметки времени, которая должна возвращать кэшированные комментарии до отметки времени A.
Таким образом, вопрос заключается в том, как изменить кэшированное содержимое, включив его между отметками времени A и B.