php快取提高效能的幾個方法

2021-04-29 15:05:42 字數 1043 閱讀 9545

專案結構是這樣的:

使用者 ----------  **(.net**)   ---------   專案**(php)

由於該專案本來是放在.net**裡的,但是現在要遷移到php這邊來,可是為了保證原有鏈結(考慮到使用者的體驗、seo等),所以在.net**做了一層**。即,.net根據 使用者請求從php處讀取到全部頁面內容,然後展現給使用者看。

而由於該項目的特殊性,我們需要較高的qps。使用http_load做壓力測試的結果是:

1、使用**的情況下,75/s

2、不適用**的情況下,120/s

3、對頁面部分內容作了memcache快取,180/s

4、對頁面整個內容作檔案快取,450/s

另外,由於.net那邊也對頁面整個內容作了全頁面快取,所以方案4並不會正式使用。但是記錄下來,在以後沒有**的時候,可以這樣用。

詳細描述一下方案3和方案4。

方案3:

不過考慮到我們暫定的快取時間為10s,所以,暫時將以上變動不太大的部分都放在乙個快取中,這樣頁面只需要同memcached互動一次就可以拿到所有快取內的資訊。以後如果發現它們變動的頻率特別不一樣,再考慮拆分他們。

由於我們不想在寫資料時變動快取中的資料,所以承受了10s內即時資料變化了,也不會反映在頁面上的風險。

方案4:

使用php提供的函式,ob_start, ob_get_contents, ob_end_flush來獲取頁面內容,並寫入到檔案中,做靜態化。具體如下:

-根據登入者與被訪問頁面的關係,區分快取檔案的名稱,比如為cache/c_1.html。 

-判斷檔案修改時間與當前時間的間隔,如果小於設定值,則使用快取檔案

if (time() - filemtime($cache_file) <= page_cache_time)

-否則更新快取:

ob_start();

//  頁面主題

$cache = ob_get_contents();

ob_end_flush();

file_put_contents($cache_file, $cache);

Java 中提高效能的幾個技巧

1.避免建立不必要的物件 2.盡量少用全域性變數,改用區域性變數 3.如果方法不需要使用成員變數,可以把方法宣告為static,效能快20 左右 4.避免使用getter setter訪問成員變數,可以把成員變數宣告為public,直接訪問 5.static的變數如果不需要修改,應使用static ...

Lucene檢索提高效能的幾個方式

1.採用最新版本的lucene 2.索引檔案儲存採用本地檔案系統,如果需要掛載遠端系統,請採用 readonly方式。3.當然採用更好的硬體,更高i o的磁碟 4.提高os 快取,調整引數 5.提高jvm heap size 6.索引檔案讀寫分離,開啟 indexreader 的時候採用 reado...

利用快取讀取檔案提高效能

前段時間寫了個程式需要對檔案進行讀取操作,一開始使用最普通的寫法 filereader in new filereader e a.html bufferedreader br new bufferedreader in string string str while string br.readl...