5

これまでのところ、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 呼び出しは、上記に追加して、新しいコンテンツのみを返す必要があります。記事が読み込まれると、ロジックは次のようになります

  1. タイムスタンプなしの最初の AJAX コメント呼び出し: 現在のタイムスタンプ A までのすべてのコメントをフェッチします。これはキャッシュされます。
  2. 時間が経過すると、新しいタイムスタンプ B で、タイムスタンプ A の後にコメントを求めるリクエストがサーバーに送信されます。この呼び出しはキャッシュされる可能性がありますが、リクエスト URL は再利用されないため無意味です。
  3. クライアントは、タイムスタンプ B までコメントを更新しました。ただし、タイムスタンプ A までのコンテンツのみがキャッシュされます。
  4. クライアントが記事を更新すると、タイムスタンプのない最初のコメント リクエストが表示され、タイムスタンプ A までキャッシュされたコメントが返されます。

したがって、問題は、キャッシュされたコンテンツを変更して、タイムスタンプ A と B の間のコンテンツを含める方法です。

4

1 に答える 1

1

ajax 呼び出しの JSON 結果を格納するローカル変数を作成します。

Max_Last_Modified_Date を格納するローカル変数を作成します。

JSON の結果を描画する JavaScript ヘルパーを作成します。

コメントの MAX(LastModifiedDate) を通知するサーバー側ハンドラーを作成します。

のコメントを JSON で返すサーバー側ハンドラーを作成します。

  • すべての結果 (最初のフェッチ)
  • Max_Last_Modified_Date より後の変更日を持つもの。
于 2012-08-14T19:47:23.007 に答える