繁体   English   中英

输出缓冲和AJAX

[英]Output buffering and AJAX

当用户单击我网站上的按钮时,页面的特定部分将被刷新,但是渲染整个部分需要一些时间。 是否可以实时显示/输出部分内容,而不是等待整个部分结束? 如果我将其作为对HTML内容的Ajax请求发送,该怎么办? 谢谢

我建议在您的AJAX调用中设置cache: true (如果使用jQuery),无论哪种方式,您都需要设置HTTP响应标头。 这里有些例子。 通过设置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。

如前所述,缓存AJAX请求是一个不错的选择。 除此之外,我认为您可以使您的应用程序看起来更快的唯一方法是,向用户显示一个进度条,同时(重新)加载AJAX内容。

您可以实现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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM