繁体   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