[英]PHP speed optimisation
我想知道PHP中的速度優化。
我有一系列文件,每個頁面加載請求。 平均有20個文件。 如果已更改,則必須讀取每個文件並對其進行解析。 這是排除網頁所需的標准文件(HTML,CSS,圖像等)。
EG - >客戶端請求頁面 - >服務器輸出html,css,images - >服務器輸出動態內容(20 +/-文件合並和縮小)。
盡可能快地提供這些文件的最佳方法是什么?
在想知道速度優化之前,人們應該對profiling
感到疑惑, profiling
由兩部分組成:
最后一個可能遠遠超出你夢寐以求的遠遠。
你在這里沒有提供足夠的信息來做出明智的答案。 到目前為止,最大的好處是來自有效的內容緩存 - 但您可能需要查看的不僅僅是您發送的標頭 - 您可能需要開始調整文件名(或URL的查詢部分)以有效地允許瀏覽器使用較新的內容代替緩存(而非過期)內容。
我有一系列文件,每個頁面加載請求。 平均有20個文件。
這些都是 php腳本嗎? 它們都是HTML頁面引用的嗎?
如果已更改,則必須讀取每個文件並對其進行解析
你的意思是他們必須在服務器上閱讀和解析? 為什么? 閱讀此文章 ,了解有關如何識別和提供可緩存靜態內容的新版本的詳細信息。
你看過服務器端緩存了嗎? 它不是那么難:
<?php
$cached=md5($_SERVER['REQUEST_URI']);
$lastmod=time() - @mtime($cache_dir . $cached)
if ((file_exists($cache_dir . $cached)) && (60 < $lastmod)) {
print file_get_contents($cache_dir . $cached);
exit;
} else {
ob_start();
... do slow expensive stuff
$output=ob_get_contents();
print $output;
file_put_contents($output, $cache_dir . $cached);
}
?>
請注意,服務器端緩存不如客戶端緩存有效。
一旦你獲得了最佳的緩存,那么你需要考慮從多個主機名提供內容 - 即使它們都指向同一個服務器 - 瀏覽器限制它對每個主機名的連接數,因此請求有效排隊什么時候他們可以並行運行。
為了進一步解決您的問題,我們需要了解更多有關您的應用程序的信息。
C。
如果您正在談論PHP文件,請使用eAccelerator。 如果您正在討論其他文件,請檢查filemtime以查看是否已更改它們以及是否必須再次解析它們。
此外,使用yslow來確定您的網站速度慢的原因。
有幾種方法可以保留PHP文件的操作碼緩存,自動檢查文件修改。 APC是我非常喜歡的其中之一。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.