2012-01-24 82 views
-4

我使用的是Facebook,並在左側垂直菜單中找到了以下功能。facebook如何快速呈現其頁面

  • 頁面加載這麼快
  • 頁面確實有它的後退按鈕啓用
  • 只有重新加載頁面的一部分。

有人把一些想法變成「如何實現它???」

+0

是Ajax請求「只是一個的頁面重載的一部分」。 – contactmatt

回答

4

您將要使用這種類型的範例得到最好的用戶體驗。

AJAX是你的朋友

只發下來,你需要得到顯示給用戶的頁面的輪廓最少的信息。

<html> 
<head> 
...scripts, meta, css etc... 
</head> 
<body> 
<h1>Facebook Info</h1> 
<div id=facebook-info> 
<p>loading...</p> 
</div> 

<h1>Twitter Info</h1> 
<div id=twitter-info> 
<p>loading...</p> 
</div> 

</body> 
</html> 

然後在每個內容部分(您尚未加載)有一個微調。

在加載您的JavaScript(爲簡明起見,我簡寫爲...有關其ajax調用的更多信息,請參閱http://jQuery.com/),您可以調用特定的PHP頁面來吐出一些JSON。這是真正的工作發生的地方,需要時間。

<script> 
$(document).ready(function(){ 
    $.ajax('/content/getFacebookInfo.php',displayFacebookContent); 
    $.ajax('/content/getTwitterInfo.php',displayTwitterContent); 
}); 
</script> 

然後在顯示的FacebookContent和displayTwitterContent回調函數中,這是您爲DOM動態構建內容的位置。

<script> 
var displayTwitterContent = function(response) { 
    var html = "<ul>"; 
    foreach(var i in response.posts) { 
    html += "<li>" + response.posts[i].message + "</li>"; 
    } 

    html += "</ul>"; 
    $('#titter-info).append(html); 
}; 
</script> 

再次,這是簡稱顯示的概念,你將有充實的腳本和還構建與JSON對象作出反應的PHP處理程序。

通過卸載的辛勤工作到AJAX處理主HTML快速送達下來,用戶是幸福的。當他的眼睛在頁面上移動時,一些AJAX調用將完成,並且您將動態插入可用數據到DOM中,並且他們會看到它。

這有點像谷歌的搜索輸入文字時,它使一個AJAX調用回服務器,抓住內容爲您實時顯示你甚至點擊提交之前。

而且研究到應用級服務器端緩存和Web服務器級別。還有一些緩存可以在網絡級別上執行。

+0

是的。你是非常真實的。但在這種情況下,瀏覽器歷史記錄不起作用(後退按鈕)以及不太友好的搜索引擎 –

1

我不是非常熟悉Facebook的內部了,但也有方法和技術,爲這些事情:

  • 如果你看看源,你會看到,在正常的環境中的Facebook只加載JavaScript源文件。快速的JavaScript應用程序通常會加載靜態壓縮JavaScript(包括視圖文件),然後僅請求JSON中的動態數據,然後在客戶端上呈現它。我的最愛仍然是編譯得非常快的EJS
  • 在支持HTML5的瀏覽器中,他們可能使用HTML 5 history。生成的URL也指向一個靜態頁面,因此直接請求時不會丟失任何真實信息。作爲後備,你可以做基於哈希的歷史記錄,它仍然保持後退按鈕的工作。
  • 這簡直是用AJAX