[英]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.