2016-08-01 76 views
1

我一直在做一個項目,我正在進行AJAX調用,從數據庫加載100條記錄,然後將其呈現在滑塊上。準確地說,我要獲取的數據是所有圖像的「圖像路徑」,以及其他詳細信息,例如「滑塊縮略圖的大小」,「要顯示的縮略圖的數量」等。加載動態HTML - 服務器端或客戶端

對於這個數據列表,我有兩個選項: 1.在服務器端生成HTML並將其發送給客戶端,它將應用於滑塊。 2.生成併發送json數據給客戶端。解析這個json數據並生成Slider的Slides。

我很困惑使用哪種方法,以獲得更好的客戶端/服務器整體性能。谷歌搜索和閱讀文章指出,使用json數據更快。但是,在執行一些初始測試以獲取並渲染HTML顯示之後,在服務器端生成HTML並將其發送到客戶端進行渲染比將json數據發送到客戶端並準備用於渲染的HTML要快得多。

如果有人會提出這個問題,那麼服務器每小時點擊4k-5k點左右就太棒了。

+0

我覺得JSON是不是將呈現的HTML數據更輕巧。所以我會選擇2. –

+0

從服務器發送'html',它將使用一個請求和響應;並根據你的測試,會更快。 – guest271314

+0

由於我使用PHP,我將不得不將數據獲取到數組中,然後在將它們發送到客戶端之前解析它們。然後,我將不得不做json.parse,並使循環生成它們。另一方面,如果我只是在服務器端生成HTML,我將保存解析時間。這就是爲什麼我認爲,與json相比,來自服務器的HTML數據呈現得更快。 –

回答

1

圍繞這個話題有很多非常棒的討論,但我傾向於在客戶端渲染方面。我的推理是1.如果你的服務器經常被擊中,服務器端渲染會減慢服務器的響應時間,並且可能導致很長的隊列時間,以及2.因爲你正在將請求與你的標記和樣式分開,你可以在用戶端有一個啓動頁面或一些等待動畫,而不是在服務器正在編譯所有內容時讓它們坐在白色屏幕上。這只是我的看法,但我發現客戶端渲染提供最好的UX以及從您的Web服務器卸載計算通常是一個好主意

+0

我唯一擔心的是在客戶端瀏覽器中會發生什麼,速度很慢。在這種情況下,確保從服務器發送HTML將是一個更好的選擇。 –

+0

雖然技術上會更好,但我確信這臺電腦的用戶非常習慣網站加載速度很慢,並且一般情況下,即使您發送HTML,也不能保證頁面加載速度很快。海事組織最好爲普通用戶進行優化,而不是試圖吸引1%的邊緣案例(雙向)。更不用說,如果客戶端瀏覽器速度慢,那麼他們可能會使用像IE7這樣的文件或類似的東西,這將是一組完全無關的問題 – Jay

0

我喜歡這個問題的答案link。 簡短說明它是什麼(複製粘貼):

我兩邊一點,實際上是:

  • 當什麼,我需要的JavaScript端的數據,我用JSON
  • 當什麼,我需要的JavaScript端的表現上,我不會做任何的計算,我一般使用HTML

使用HTML的主要優點是,當你想更換一個完整什麼從Ajax請求會在您的網頁部分:

  • 重新建設JS網頁的一部分(相當)硬盤

  • 你可能已經在服務器上的一些模板引擎那邊是用來生成頁面的第一個地方......爲什麼不用 重用呢?

我一般不真正考慮到至少在服務器上的「表演」的事情 側,:

  • 在服務器上,生成HTML或JSON一些的一部分將不會有很大的區別

  • 關於通過網絡的東西的大小:好吧,你可能不會使用數百KB的數據/ HTML ...使用gzip 什麼你正在轉移是什麼將使最大的 差異(不在HTML和JSON之間進行選擇)

  • 但是,可以考慮的一件事是您需要在客戶端上重新創建HTML(或DOM 結構)從JSON數據...比較,爲推動 HTML的一部分進入頁面;-)