2012-09-02 46 views
0

幾年前,我從零開始創建了我的第一個PHP頁面(新聞站點)。我看重做,並已開始重新設計,但我打我的網頁的速度問題,所以有幾個問題:緩存查詢重頁(PHP/MySQL)

  1. 我可以使用哪些工具來確定瓶頸是在PHP?
  2. 儘管頁面是動態的,但它每兩個小時只會改變一次。最好的簡單工具是什麼(我確實有一個VPS,但它有多個站點),可能會加速這個過程?
+0

Memcache的本地存儲:http://memcached.org/ –

+0

出於性能:http://stackoverflow.com/問題/ 9541746/Xdebug的-VS-XHProf的 –

回答

0

我生活的有些規則;

  1. 如果你有大量的javascripts,將它們合併成一個大的。減少對服務器的壓力,免除客戶端閒置的請求,爲實際有效負載提供圖像等。
  2. 如果你有大量的樣式表,合併非嗅探依賴(媒體=「所有」,而不是'如果IETE'等)。與上述相同。這種技術還可以降低gzipping的開銷。
  3. 當您有密集的mysql查詢時,生成HTML - 將.html文件堆疊到服務器目錄中。利用它們,只需通過include 'cache/pageid.html';或類似的。將輸出緩衝區放入內存中是RAM的巨大消耗。
  4. 減少圖像的數量 - 以及將所有可能的東西合併爲表格(通常在CSS中),這樣做。
  5. 詳細地說,嘗試創建一個'static.mydomain.tld'。這應該是一個簡單的http-cache-directive的無cookie的域;到期。這可能會給你一個pr請求標頭,而不是大於1k。

我的第4項確實犯規需要太多的工具來實現這一目標。我只需要創建一個包裝函數,它類似於

function writePageContents($cachefile) { 
    $maxage = time() - 60*60; // one hour 
    if($maxage < filemtime($cachefile)) return file_get_contents($cachefile); 
    else return createPageFromDb(); 
    } 

所以,做一個濃縮的頭,包括所有的可緩存的腳本和樣式表,從'cdn'服務它們。把所有的元素放在右邊 - 關閉標題,然後flush()

後來想想,如果你需要重新創建高速緩存 - 如果沒有,只是包括磁盤

0

您可以使用memcache實現基於時間的內存駐留。
使用Explain語句來確定mysql查詢的效率。
如果頁面上有大量圖片,可以使用延遲加載技術和精靈技術。
將您的JavaScript文件包含在body標籤的末尾。
欲瞭解更多信息,請查看此鏈接
http://developer.yahoo.com/performance/rules.html
感謝