簡體   English   中英

收到http響應代碼304后,如何解決緩存的內容刷新問題?

[英]How to get around the cached content refresh after http response code 304 is received?

我有一個PHP應用程序,它使用prototypejs與另一個PHP腳本進行ajax輪詢,以檢查是否有新內容或內容是否已更新。 如果內容未更改,則它返回http響應代碼304。

一切正常,但是我發現,即使發送了響應代碼304,瀏覽器似乎仍在刷新內容。 看來此數據來自瀏覽器緩存,緩存中填充了來自最后成功的響應代碼200(當輪詢器發現更改的數據時)的內容。

http rfc指出:“如果狀態代碼為304(未修改),則高速緩存將使用存儲在高速緩存條目中的實體作為該傳出響應的實體。”

有辦法解決這個問題嗎? 因為即使沒有數據被更改,但是每次返回代碼304時,人們仍然會看到輕微的閃爍。 我可以使用響應代碼410(已消失),它沒有這種怪異的行為,但是我認為這不是解決問題的方法。

我當前的ajax調用是簡單的原型代碼:

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”部分執行此操作,但是我不知道如何操作。

請另外查看原始的相關網站http://codeigniter.com/wiki/AJAX_for_CodeIgniter/,因為它僅提供了有關htis的示例。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM