2016-05-31 59 views
0

我打算爲我的站點實現一個緩存系統,該緩存系統接收可觀的流量。有時MySQL服務器被重載,這就是爲什麼我將MySQL結果緩存在靜態(緩存)文件中。這是我做的:MySQL查詢和靜態緩存之間的性能比較

  1. 首先,我檢查緩存文件(網頁專用)
  2. 如果它不存在,我查詢數據庫和序列化的結果
  3. 我寫結果緩存文件
  4. 當文件存在,我得到file_get_contents()功能內容和反序列化數據

現在的問題是,我的緩存策略提高性能,或者我應該繼續使用數據庫查詢每一個[R eQUEST的?請幫忙。

+0

你是問關於如何測試它的幫助? –

+2

一般來說,文件訪問速度比數據庫查詢慢_except_如果您的查詢非常昂貴。你可能想要做的是緩存你在內存中創建的對象而不是文件。這種方式既不需要查詢也不需要對許多請求執行文件訪問。和內存是驚人的便宜,作爲一種資源... – arkascha

+0

@JeffPuckettII我問,哪一個會把更高的負載在服務器上。 – Rehmat

回答

1

有很多方法可以加速您的網站並降低數據庫負載。那些嘗試製作手動緩存文件要好得多。下面是其中一些:(!這麼多有趣的時刻)

  1. 優化數據庫設置
  2. 使用內存表
  3. 添加CPU \內存到網絡服務器
  4. 使用緩存服務器,比如nginx的或清漆(那些可以把整個靜態頁面緩存)
  5. 使用專用的數據緩存在PHP - 像memcached的
  6. 使用套接字而不是TCP \ IP連接到數據庫
  7. 使用MySQL-ND爲mysql

這裏是回答你的問題相關:PHP - Is it good practice to cache MYSQL queries in a txt file?

+0

謝謝你的回答。我會檢查你的建議。緩存內存中的MySQL結果對我來說似乎並不是一個好的解決方案,因爲我的頁面經常更新(包括用戶評論,評分等),因此緩存將會很快失效。 – Rehmat

+0

@rehmat一些結果經常更新...但有些不是。您可以分別爲每個數據集設置緩存時間。另外,問問自己一個問題 - 你的用戶是否真的需要所有情況下的實時實際信息?無論如何,那將會更好,然後緩存在硬盤上。 – Jehy