2009-01-10 60 views
2

對於下面的非常簡單的任務:查詢從DB的產品列表並將其顯示在網頁上, 考慮2個設置:性能基準:PHP生成內容VS. JavaScript和DOM在AJAX

設置1:PHP腳本查詢。所有內容都在服務器上構建,整個頁面都會返回給客戶端。

設置2:靜態HTML「頁面骨架」使用AJAX請求內容。接收到的內容在客戶端使用Javascript進行解析,並使用innerHTML或類似方法渲染。

當然,第二種設置只有在客戶端用戶可以選擇頁面,類別和標籤時纔有意義。

我需要比較這兩個,至少通過以下方式:

  • 時候就會走內涵送達
  • 用戶體驗(設置1輸送爲一體,設置2在交付「兩個部分」)
  • 可擴展性 - 如何在設置時,我有10萬次,每天的查詢

對這個問題有什麼想法將是多大的比較ppreciated。

+0

我注意到你用「肥皂」標記了這個問題。我同意海報AJAX通常是最好的解決方案,但如果你不需要使用它,就應該避免使用SOAP。解析SOAP並不簡單,您可以通過使用JSON避免額外的工作和兩端的處理開銷。 – Prestaul 2009-01-11 00:00:02

回答

9

您可能會發現以下問題有所幫助:Smarty Vs. Javascript/AJAX

我帶了幾個點,在我回答這個問題:

  • 你應該使用服務器端腳本來顯示任何在加載頁面時已知的數據。在這種情況下,您知道應該顯示產品列表。在頁面加載時,應該顯示問題答案的事實是已知的。

  • 您應該只使用AJAX調用加載動態數據是在頁面加載時刻聞名。例如,當您點擊Stack Overflow上的問題或答案下的「comments」鏈接時。在頁面加載時,您不希望查看特定問題的評論。

  • 的Javascript應該需要訪問您的站點的核心功能。

  • 當Javascript被禁用時,您應該優雅地降低功能。例如,Stack Overflow在JavaScript禁用的情況下工作得很好。您無法使用實時Markdown預覽或動態徽章通知,但核心功能仍然完好無損。

  • 一個HTTP請求到服務器生成的頁面將加載比請求顯著更快地下載一個頁面,使得五個或六個附加AJAX調用,尤其是在高延遲的連接(如蜂窩網絡)。請參閱雅虎的Best Practices for Speeding Up Your Website

您應該將Javascript視爲可能未啓用的附加功能,而不應將其用於構建網站關鍵部分。這條規則有例外。如果你想做某種分頁,點擊「下一頁」按鈕,只有產品列表發生變化,AJAX可能是正確的選擇。但是,您應該確保沒有使用Javascript的用戶不會排除查看整個列表。

沒有什麼比當網頁開發人員不遵守KISS principle時無法訪問頁面更令人沮喪。作爲一個例子,拿Friendly's Restaurants。當我在商場時,我想查看their menu,所以我在他們的iPhone上加載了他們的網站,只是爲了發現你在沒有Flash的情況下無法獲得關於餐廳的任何有意義的信息。很高興有各種各樣的甜點飛往世界各地,但最終,我只想看看他們的菜單上的項目。我無法這樣做,因爲他們需要Flash。在這種情況下,服務的優雅退化會有幫助。

沒有Javascript就無法有效地完成網絡上的一些事情。顯示產品清單是而不是其中之一。如果您仍然不確定,請查看其他受歡迎的網站如何執行操作。我想你會發現大多數成功的,設計良好的網站都遵循上面列出的準則。

1

當只有一小部分頁面發生變化時,AJAX可能是更好的選擇。

我建議先從服務器端版本開始,然後在其上構建AJAX。這樣你就可以得到一個沒有javascript的網站版本,如果你關心的是在搜索引擎中被索引的話,那麼你可能還需要它。

但是,首先集中精力創建一個剛剛起作用的頁面 - 您可以隨時對其進行優化。

1

客戶端的性能有很多因素。當時運行的是什麼,瀏覽器,內容是什麼,頁面的CSS是什麼,瀏覽器的緩存有多滿,安裝了什麼插件,網絡上發生了什麼等等。請記住,當你在玩數字。

0

除非實現太糟糕,否則AJAX應該勝任。其中的好處是:

  • 並行由於在客戶端側並行請求(即您可以使用多個服務器的CPU內核,以服務於一個服務網頁的部分,即不能使用PHP輕鬆完成)

  • 僅刷新頁面的小零件更快(較少的數據傳輸,產生...)

  • 它擴展好得多,因爲服務器具有較少的工作要做(ESP。如果你可以卸載一些處理的需要生成HTML給客戶端,而不是隻提供它)

http://www.startpagina.nl/動態網頁最近AJAX代言之前一直在做這種成功,因爲方法(1靜態文件的形式提供,所有定製都在客戶端完成 - 無論如何我最後一次檢查)。

當然,你可以用任何一種方法搞定它,使它變得比其他方法慢。