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