2012-09-12 205 views
1

我在我的網站上使用onapp api,並在一個頁面中獲取onapp中的所有服務器。對於一些用戶來說,這個列表非常大,在某些情況下它可以擴展到一千個。迴應不僅是數據,而且還包含其他信息。另外我正在做一個分頁。所以每個API都必須被調用並且數據應該被填充。現在爲了提高速度,我正在寫一個文件的響應並從中讀取數據。但這也需要時間。無論如何加速這一行動。緩存API響應

在進行文件緩存之前,每個頁面大約需要45秒,現在它減少到25個。但這也是一個很高的值。我正在使用Symfony框架。我正在使用以下代碼將數據緩存到文件。

$userStatisticsCached=unserialize(file_get_contents($filePath)); 
    if(is_null($userStatisticsCached)||$userStatisticsCached==false){ 
     $userStatistics = $statisticsInstance->getList(1); 
     file_put_contents($filePath, serialize($userStatistics)); 
    } 
    else { 
     $userStatistics=$userStatisticsCached; 
    } 

有沒有更好的方法來實現相同的輸出加載時間更少?

+0

任何幫助????????? –

回答

2

第一張: 45秒需要很多的頁面加載。你有多少個API調用?

第二:哇,所有API調用已經緩存在文件系統中的25秒也是非常巨大的。您的頁面加載執行多少個文件系統查找?測量25s頁面加載時,你確定所有的API請求都被緩存嗎?

內存緩存: 根據您的數據的大小,我一定會建議在內存中存儲你的緩存數據,加快高速緩存查找。對於大約1GB或更少的緩存,它不應該是一個問題(取決於您運行的服務器硬件/託管提供商)。一個優秀的首選是Memcache,這也恰好有PHP support

正在運行Memcache:在本地計算機上工作時,您應該沒有問題爲自己安裝memcached。當您將網站上傳到服務器時,您需要確保Memcache在同一臺服務器上運行,或向服務器託管提供商詢問如何連接到其memcache服務器的詳細信息。大多數PHP託管提供商都提供Memcache作爲託管的一部分。如果他們不這樣做,您可以使用託管的遠程內存緩存提供程序,如MemCachier,但延遲到遠程服務器會延緩緩存查找速度。