2011-05-11 14 views
0

私は、新しいコンテンツがあるかどうか、またはコンテンツが更新されているかどうかを調べるために、プロトタイプを使って別のPHPスクリプトを使ってajaxポーリングを行うPHPアプリケーションを持っています。内容が変更されていない場合は、HTTP応答コード304を返します。http応答コード304を受信した後、キャッシュされたコンテンツをリフレッシュする方法は?

これはうまくいきますが、ブラウザが応答コード304を送信したにもかかわらずコンテンツの内容を更新しているように見えることがわかりました。このデータは、最後の成功したレスポンスコード200(ポーラーが変更されたデータを検出したとき)からの内容で満たされたブラウザのキャッシュから来ているようです。

http rfcは次のように記述しています。「ステータスコードが304(Not Modified)の場合、キャッシュはキャッシュエントリに格納されているエンティティボディをこの発信応答のエンティティ本体として使用します。

これを回避する方法はありますか?データは変更されていないものの、コード304が返されるたびに人々はややちらつきが見られます。私は、この奇妙な振る舞いを持たないレスポンスコード410(Gone)を使用することができますが、私はそれを行う方法とは思わない。この動作は、プロトタイプを経由して無効にすることができる場合

function showProcessing() { 
    if(Ajax.activeRequestCount > 0) 
    document.getElementById('inProgress2').style.display = 'none'; 
    document.getElementById('inProgress').style.display = 'inline'; 
} 

function hideProcessing() { 
    if(Ajax.activeRequestCount <= 0) 
    document.getElementById('inProgress').style.display = 'none'; 
    document.getElementById('inProgress2').style.display = 'inline'; 
} 

Ajax.Responders.register({ 
    onCreate: showProcessing, 
    onComplete: hideProcessing 
}); 

だから、それはおそらく、「onCompleteの」部分で行う必要があります何かが、私は避難所」:

私の現在のAJAX呼び出しは、単純なプロトタイプのコードですどのように手がかりを得た。

+0

あなたのajaxレスポンスハンドラはHTTPステータスコードをチェックして、304なら何も変更しませんか? –

+0

javascript/ajaxは私の強力なポイントの1つではありません:(私はちょうどオリジナルの投稿にプロトタイプjsコードの小さな部分を追加しました。 –

+0

jqueryに移動しました。 –

答えて

関連する問題