2011-11-12 81 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