2013-02-27 64 views
-1

通過編寫一個函數庫,在查看服務器端(PHP)實現與客戶端(jQuery)實現時呈現標記的函數庫,對生成網頁有什麼影響?生成標記,jquery或php更快嗎?

服務器端: 客戶端發出請求,服務器通過運行php程序渲染標記,將標記發送給客戶端,瀏覽器加載它並顯示網頁。

function makeTitle($text) { 
    echo <<<HTML 
    <style> 
    #title { 
    color:red; 
    } 
    </style> 
    <div id = "title">{$text}</div> 
    HTML; 
} 

makeTitle("This appears as red text"); 

客戶端: 客戶端發出請求時,JavaScript是一個.html文件發送給客戶端,客戶端的瀏覽器呈現的標記,加載它和網頁顯示。

var text; 
function title(text) { 
$('body').html(function() { 
    return '<div id = "title">'+text +'</div>'; 
}); 
$("#title").css("color","red"); 
} 

title("This appears as red text"); 

哪個實現將更有效率,使用戶將不得不等待更短的時間,無論是對服務器運行PHP程序或運行JavaScript程序的瀏覽器,在何種情況下將各自執行最在生成靜態CSS和HTML方面高效?

+4

你必須測試它,但我懷疑服務器會非常非常快。 jQuery沒有速度惡魔,服務器應該比單線程客戶端(可能是平板電腦或手機)要煩瑣得多。 – RobG 2013-02-27 03:55:54

+0

這一切都取決於應用程序的性質和預期的設計。這不是一個純粹根據速度/效率標準應該回答的問題。每個選項都有許多不同級別的折衷。 – prodigitalson 2013-02-27 03:57:13

+0

我將編輯這個問題,以清楚表明我並非旨在設計一個CMS – Emanegux 2013-02-27 03:58:06

回答

4

在服務器上生成會很快,但是您在jQuery中提到了一個.html文件的請求。爲什麼不使用jQuery生成html?您可以通過將jQuery對象傳遞給一個封閉的HTML標記來創建DOM元素,例如$('<div/>')。這是一個使用你給出的例子的實現。

function makeTitle(text) { 
    $('body').append(
     $('<div/>', { 
      id: 'title' 
     }).css({ 
      color: 'red' 
     }) 
    ); 
} 

makeTitle("This will appear as red text"); 

如果你正在尋找一個簡單的模板解決方案,PHP將是一個不錯的選擇,但如果你想創建一個Web應用程序或網頁,將頻繁更改的內容不刷新頁面,我發現它令人難以置信的簡單並快速使用PHP來生成數據,並使用jQuery來生成標記。

0

我認爲通過PHP生成標記更可靠,因爲如果在瀏覽器上禁用javascript,可能不會顯示標記。

除此之外,客戶端計算機可能具有不同的配置,這將進一步影響標記生成響應時間。所以我認爲通過PHP的標記會更有效率。

+0

-1。 – kay 2013-02-27 04:10:41

0

我會用PHP。處理時間的差異很小,但對於沒有啓用JavaScript的客戶也適用,並且不需要在沒有其他地方使用的情況下下載jQuery的開銷。

+0

這更多的是在2008年的一個爭論..它幾乎就像爭論支持IE6。 – 2013-02-27 03:59:13

+0

這個問題也是2008年的一個爭論,無論是渲染字符串服務器端還是編輯DOM客戶端都會更快。所以看起來即使很小的性能增強對OP也很重要。 – sjdaws 2013-02-27 04:01:38

+1

@pst需要輔助技術的人們(例如視力受損的人)使用的許多瀏覽器比IE6更糟糕。在不瞭解OP的預期應用和目標受衆的情況下,我不排除這種擔憂。 – Paul 2013-02-27 04:01:50

4

使用javascript呈現標記時的另一個含義是,您的標記對於Web爬蟲不可見。如果SEO是一個問題,不是最好的方法。

+1

這是一個非常有趣的觀點。必須有方法通過ajax爲純粹的客戶端實現發送爬蟲的元數據。 – Emanegux 2013-02-27 04:03:17