專案結構是這樣的:
使用者 ---------- **(.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...