2012-11-19 72 views
0

我想知道如果你在純文本html文件中或者在PHP文件中加載了所有的html文件,它會從數據庫加載你的html。哪個更快,純HTML或從數據庫中存儲HTML?

如果客戶端會詢問將立即發送的頁面而不需要數據庫交互。如果兩個PHP必須從數據庫中加載數據,然後將它們轉換爲對象,然後將它們歸檔到html文件中,並將其發送回主機。

看起來第一個選項是最快的選項。提到在這兩種情況下,動態HTML都將由PHP生成,巫婆也會通過數據庫加載。

我正在測試這個環境,我可以測試。我會自己測試一下,當我有它們時我會上傳結果。

就我所知,Joomla從數據庫加載整個HTML文檔。現在,當我想自己創建一個CMS時,我希望我的網頁能夠快速加載。在我看來,Joomla很糟糕,所以我的問題仍然存在:

哪個更快的純html或從數據庫中存儲的html?

我看到我的問題產生了很多情緒。我會爲我的問題增加一些更多的價值。

  1. 我是不是該測試自己:「中 - 當然是的,我不是一個懶惰的痛打巫不準備尋求答案我自己」
  2. 那你爲什麼還問:「我很感興趣,你的看法。認爲我可以自己找到所有答案是很愚蠢的,也有很多程序員有經驗可以知道這個,所以爲什麼不問「
  3. 在所有情況下,HTML都由CMS管理。這個想法是,cms必須以非常混雜的方式快速運行。所以,如果你有一個小網站或一個大網站,如果你有一個網站,實際的動態內容或內容女巫將是相同的幾年都沒關係。
  4. 我在評論中看到人們說沒有任何性能問題,或者它太小而不能算。我的問題是:「它真的不重要嗎?純文本文件或生成表單數據庫」
  5. 緩存?好吧,我會看看緩存。

我做了一些測試,這是結果。對我而言,他們會發生奇怪,我無法理解它。我已經使用谷歌鉻來存儲geensteil,tweakers.nl和stackoverflow(本頁),google.com的網頁。然後我使用chromes inspect-tools檢查頁面,並使用網絡按鈕查看我正在加載的wath。然後我複製HTML並將其放入MySQL myisam中,然後使用PHP加載它。我在excel文件裏寫下了結果。

這是我的測試結果:

here

+4

「 *我想提出一個測試環境,在那裏我可以測試這個我將測試此我自己,我會上傳結果時,我有他們。*」 - 不會將您的結果答案這個問題? – eggyal

+1

哪個更容易維護?你應該真的存儲標記與內容? Joomla是唯一一個曾經寫過的CMS,還是有其他的選擇?如果您只是存儲標記文件,那麼CMS有沒有什麼價值? –

+1

停止[過早優化](http://c2.com/cgi/wiki?PrematureOptimization)。任何速度差異都不太可能是顯着的。 – Quentin

回答

2

簡述:

數據庫 - 這需要時間做服務器和數據庫以及腳本即之間的握手。連接,查詢,返回結果,通過腳本將結果呈現給頁面。

平面文件 - 你直接訪問該文件,因此它會是,如果它已經嵌入到網頁中,唯一的一次是執行代碼。

但是,除非你在一個非常緩慢的服務器上,否則你應該不會注意到它們之間的差異。 Joomla,在我看來,這是一個相當苛刻的CMS,如果你只是想放幾頁,那就不是那麼好。如果你追求的是簡單的東西,可以嘗試閱讀一些教程並自己編碼。這應該讓你開始

  1. http://www.1stwebdesigner.com/tutorials/creating-your-own-cms-1/
  2. http://css-tricks.com/php-for-beginners-building-your-first-simple-cms/
+1

「在服務器和數據庫之間進行握手需要時間」 - 並非如此,[PHP支持持久數據庫連接](http://php.net/manual/en/features.persistent-connections.php) – Quentin

+0

不回答我的問題:「女巫是禁食的方式」。我的問題不是如何製作CMS。關於這個知識對於構建CMS是非常重要的。此外,我感興趣的是,在這種情況下,其他人或更可能程序員如何看待速度。我忙於自己的研究,如果有經驗或測試結果的人可以給我一些很好的答案,那將會很好。我唯一的問題是速度更快,如果是動態頁面,最好的選擇是什麼。 – botenvouwer

+0

@Quentin - 無論如何,假設您要創建並關閉每個連接。 – Matzo

1

嚴格考慮的兩個相同的HTML文件(一個來自文件系統服務和其他來自DB服務)始終是靜態文件的頁面加載時間是最快的。

你可以從它例如Nginx,Varnish,它通常比apache更快。您不需要像PHP那樣加載額外的庫,也不需要連接MySQL的連接開銷,也不需要等待查詢時間。

*注意:使用Apache和mod_php的PHP有很大的開銷。使用永久連接到MySQL或連接池,php-fpm代替mod_php和APC可以提供很多幫助,但它與靜態文件的服務速度仍然有很大差距。*

如果你想真正快速的頁面加載時間。嘗試nginx + memcache(http://wiki.nginx.org/HttpMemcachedModule)。 Nginx能夠直接從memcache獲取數據。將整個html放在memcache中,其中的關鍵是url。下面是一個示例nginx的設置:

location/{ 
    if ($request_method = GET) 
    { 
        set $memcached_key some_prefix:$request_uri; 
        memcached_pass localhost:11211; 
        error_page 404 =200 @fallback; 
    } 

    default_type text/html; 
    try_files $uri $uri/ /index.php$uri?$args; 
} 

location @fallback { 
    try_files $uri $uri/ /index.php$uri?$args; 
} 
相關問題