输出缓冲和AJAX

时间:2011-11-12 22:01:15

标签: php ajax jquery output-buffering

当用户点击我网站上的按钮时,页面的特定部分将被刷新,但渲染整个部分需要一段时间。是否可以实时显示/输出该部分的部分而不是等待整个部分完成?如果我发送它作为html内容的ajax请求,我该怎么做?感谢

3 个答案:

答案 0 :(得分:0)

我建议在你的AJAX调用中设置cache: true(如果使用jQuery),无论哪种方式,你都会想要设置HTTP响应头。 Here are some examples.通过设置cache-control标头和expires等,您的AJAX请求(如果未更改)将从缓存中加载。这将大大加快速度。

一个简单的例子:

if (!headers_sent()) {
    // seconds, minutes, hours, days
    $expires = 60*60*24*14;
    header('Pragma: public');
    header('Cache-Control: maxage=' . $expires);
    header('Expires: ' . gmdate('D, d M Y H:i:s', time() + $expires) . ' GMT');
}

注意:这不适用于POST请求,只需GET。

答案 1 :(得分:0)

如上所述,缓存您的AJAX请求是一个不错的选择。除此之外,我认为你可以做的只是让你的应用程序看起来更快,就是向用户显示progressbar同时(重新)使用AJAX加载内容。

答案 2 :(得分:0)

您可以实现Pagelets技术。基本上你可以通过以下方式解决这个问题:

index.html
  Ajax -> load content from PHP script which outputs the navigation bar
  Ajax -> load content from PHP script which outputs the body

并且有几个不同的Ajax调用加载您站点的每个不同部分。但是,这确实有增加用户浏览器必须进行的HTTP请求数量的缺点。

这是假设不同的部分可以与页面的其余部分分开生成。如果您需要同时生成所有内容,那么此技术将毫无用处。

这是一个很好的阅读(Facebook项目名为“BigPipe”):http://www.facebook.com/note.php?note_id=389414033919