2011-08-07 143 views
1

我在我的website上使用了php,所以它可以顯示多種語言。我注意到HTML文件的大小減少了,因爲大部分文本都被移動到了一個新的大型php文件,其中包含所有可用語言(只有兩種)的所有「慣用」文本。php是否會增加頁面加載時間?

我的問題是:以前只用必要的文本下載了一個html頁面。現在下載一個較小的html頁面,但是一個大的php文件總是包含在內,無論html是使用更多還是更少的行。

問題:

  1. 當PHP文件包括(include_once(file.php);require_once(file.php);)發生了什麼? file.php的內容是否被複制到html?它只是用來對語言處理器說:「如果你需要解析一個名字,你可能想看看file.php」?
  2. 什麼是(速度)高效;在每個html頁面的每一種語言中都有一個大php; 每個html頁面只有一個php文件需要該頁面所需的代碼?
  3. 在使用前應該包括一個php,應該是一個普通的包含在頁面頂部的大部分php,最終將被用在html頁面上嗎?
  4. 最後,php會增加頁面加載時間嗎?

P.S:有人試過PHP Speedy?它真的有用嗎?它有什麼問題(兼容性)?


我發現:

  1. (檢查溶液)
  2. 兩種解決方案都具有完全相同的性能。我選擇用語言分開文件,因爲它感覺更整潔。
  3. 同上,對性能沒有影響。
+0

我認爲一個重要的觀點是如果你使用php加速器/字節代碼緩存。 – CodesInChaos

+0

我不知道,我什至不知道那是什麼!我是新來的php:P – dialex

回答

4

1)每包括/ require語句是由隨附/必需的文件的內容所取代。包含文件本身的內容正在成爲執行腳本的一部分,但是如果它成爲HTML響應的一部分,則取決於內容本身。

2)除非你有大量的訪問者,否則你幾乎不會注意到包含一個大文件和幾個較小文件的區別。然而,它的好做法是隻包含實際需要的部分,因爲這樣可以節省Web服務器的內存和資源,從而在發生大量請求時可能會出現問題。

3)包含代碼的位置並不重要。出於純粹的組織原因,儘可能在腳本開始時包含所有內容,但有時這是不可能的,這意味着您經常會看到代碼包含在函數內部等。

4)有一些延遲涉及在與純HTML文件進行比較時解析PHP文件,因爲該流程涉及到Web服務器擴展本身的「往返」,但由於內部緩存機制等原因,很難發現延遲,即使幾乎不可能在統計學上證明。

編輯:如果你關心你的網站表現良好的開端是一些谷歌Chrome擴展,例如Page SpeedSpeed Tracer的。他們將幫助您查明可能降低您網站性能的常見問題。

對於服務器端的總是好的,使用代碼分析器發現潛在的性能豬如高​​數的函數調用等。您可以使用xDebug PHP debugger附帶了一個很好的探查和WebGrind分析本身的性能。

0

這一切都取決於。爲了,

  1. 號當你說include,PHP確實在file.php一切,然後用一個,裏面有include繼續。
  2. 這取決於。我認爲1頁/語言設置會慢一點。
  3. 沒有區別。我通常把它們放在最前面,因爲所有東西都在同一個地方。
  4. 它可能,但我不這麼認爲。

不,PHP Speedy負責縮小和合並您的JavaScript和CSS。涅槃含義:

div#content { 
    color: #000; 
} 

變成這樣:

div#content{color:#000;} 
+1

這個轉換產生了一個不同的選擇器,然後:) – Joey

+0

解釋,AFAIK沒有任何區別... –

+0

是的。在第一種情況下,您正在訪問div內的id選擇器#content。在第二種情況下,您正在訪問ID爲#content的div元素。這是兩個完全不同的選擇器:) – brezanac

2

此前,只有必要的文本下載了一個html頁面。 現在下載了一個較小的html頁面,但是一個大的php文件總是包含 ,無論html是使用更多還是更少的行。

我不喜歡這種方法。爲何加載不必要的東西另外,隨着網站的擴展,它可能會變成一個非常臃腫的文件。

還有其他的方法,如:

1)從數據庫中獲取文本。

2)根據語言將文本存儲在單獨的文件中。即使你不熟悉php,也可以輕鬆完成這一項。它應該比當前的解決方案更快。

您提出的問題:

When a php file is included (include_once(file.php); or 

require_once(file.php);)發生了什麼? file.php的內容是否被複制到html?它只是用來說 語言處理器「如果你需要解析一個名字,你可能想 看看file.php」?

當你包含或需要一個文件(如果它成功加載), 服務器將執行你有它的任何代碼。

對於更詳細的答案,這是一個非常廣泛的問題,請查看一些文獻。

Should a php be included right before being used, or should be a 

一般包括在頁面的頂部是得到大多數PHP的是 最終將沿着HTML頁面中使用?

這兩種方法都適用於不同的情況。有時候,你需要執行一些代碼,並在其他事情發生之前先執行代碼(在你的情況下,它可能意味着應該使用哪種語言)。其他時候,你可能想包括頁腳,所以它只有意義,包括它在底部的某個地方。

Finally, does php increase a page loading time? 

要看情況,你必須衡量自己。但是沒有理由遠離php。

0

是的,當您使用PHP時,請求需要更長的時間,但較小的請求根本不需要太多時間。從PHP到HTML的差異並不明顯。

當你包含一些東西時,PHP會解析它,就像它是一個php文件一樣(並且需要從每個包含的HDD中加載文件)。