これまでのところ、AJAX を使用して静的コンテンツと動的コンテンツを分離できることがわかっているため、ブログ投稿にコメントの更新がある場合、記事を再ダウンロードする必要はなく (304 になります)、コメントのみをダウンロードします。今度は、取得した動的コンテンツを永続化して、次回は新しいコメントのみを要求する必要があるようにすることを考えています。Flash/Gears/HTML5Storage やその他のプラグインに頼らずにこれを行う方法はありますか?
編集:記事のコメントセクションが次のようになっているとしましょう:
<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 の間のコンテンツを含める方法です。