2011-11-12 50 views
0

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

回答

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请求的工作,只得到。

+0

我能赶上在用户的浏览器某些HTML内容?我将如何与httpd.conf文件做到这一点?此外,我的内容是动态的,所以我不知道缓存是否合适。 – Ben

+0

是的,你可以。你有权修改.htaccess文件吗?我会说改变这些设置_there_而不是直接修改Apache配置。无论哪种方式,请查看我在答案中的链接(它说“这是一些例子”)。 –

0

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

+1

您也可以使用新的HTML5''标签;) – ComFreek

+0

hmmm ...所以没有任何方法显示内容,因为它正在通过ajax进行处理? – Ben

+0

不是我意识到,没有 –

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