2010-03-10 111 views
15

我的網站上的每個頁面都使用PHP呈現。有多少PHP包含太多?

每個PHP文件使用大約10個包含。因此,對於顯示的每個頁面,除了其餘的功能(MySQL等)之外,服務器還需要獲取10個文件。

我應該將它們合併成一個包含文件嗎?這會對現實世界的速度產生什麼影響嗎?這不是一項簡單的任務,因爲將有一個可變範圍的意大利麪條來整理。

回答

24

包含文件在服務器上處理,所以它們不會被瀏覽器「提取」。使用的性能差異包括複製和粘貼代碼或整合文件是微不足道的(我猜我們正在談論的毫秒到100  毫秒範圍,絕對最多),它不是根本不值得。

隨意includerequire你的心臟的內容。清潔代碼實質上比頁面加載時小於100ms更重要。如果你正在構建一個時機很關鍵的東西,那麼你不應該使用PHP。

+0

我認爲這是比這更復雜,因爲它取決於如果文件被從內存或磁盤中讀取。從磁盤 - 它可能需要幾毫秒,取決於它是否碎片和文件的大小。 (操作系統可以緩存文件或HDD設備本身..) – Dor 2010-03-10 15:04:49

+3

@不要低估磁盤緩存功能:)磁盤碎片永遠不會影響您的網站 – 2010-03-10 15:09:38

+0

如果您擁有的話,您甚至可以通過增加realpatch_cache_size來降低性能影響很多包含文件。 – gagarine 2012-08-06 17:02:46

0

儘管最大的性能吞食者之間的磁盤I/O操作,常規站點不會注意到包含任何明智的數量。 在你碰到包含任何問題之前,你可能已經有了一些操作碼緩存來消除這個問題。

0

include\ and requires`在服務器端只打開文件,但根據硬件/文件系統,可能是時候consumming等

無論如何,如果可以的話,使用autoloader。只有需要的文件將以這種方式加載。

然後,如果你認爲包含的文件是放緩的來源(我想有很多其他點之前尋找改進),你可以嘗試自動合併文件。開發時,每個類仍然有一個文件,但是您可以構建一個文件,其中包含每個類的定義,只有一個include(類似於cat <all your included file>.php > to_include.php)。

3

需要花費時間的是確定文件實際位於包含路徑中的位置。如果您的包含路徑中有多個位置,PHP將搜索每個位置,直到它找到文件或失敗(在這種情況下,它會引發錯誤)。這就是爲什麼你應該把include路徑放在include路徑的頂部,這些路徑包含大部分包含的文件。

如果您在include路徑使用絕對路徑,PHP將緩存的真實路徑緩衝區的路徑,但請注意這很快變得過時。所以是的,包括十個文件可能比包含一個大文件慢,只是因爲PHP必須更頻繁地檢查包含路徑。但是,除非您的網絡服務器是一臺非常薄弱的​​機器,否則十個文件不足以產生影響。當包含數百個文件或有許多位置要搜索時,這會變得很有趣,在這種情況下,無論如何您都應該使用OpCode緩存。

還要注意的是,包括文件時,這是不好的做法,包括每一個文件就在開始的時候,因爲你可能會包括那些從來沒有您的應用程序特定請求來調用文件。


參考