2009-12-15 77 views
1

我有一個PHP應用程序,在渲染合併這些對象的網頁之前調用Web服務API來獲取一些對象。在某些情況下,這些API非常慢(秒),從用戶體驗角度來看這是不可接受的。兩件事情,我知道我能做到......Memcache處理高延遲Web服務API - 好主意?

  1. 使用Ajax,並在後臺這些調用
  2. 超時通話和優雅降級如果服用時間過長

也不是理想,所以我在考慮使用memcache(Memcached的PHP擴展)來緩存我從第三方Web服務獲得的對象。這些對象會被加載相同頁面的不同用戶多次加載,所以這似乎是有道理的。

物體相對較小(約1k)。

這聽起來像一個合理的方法嗎?我知道memcached最初是爲減輕數據庫負載而設計的,所以我想知道是否有一個我沒有看到的陷阱。

謝謝。

回答

0

這種方法在您的情況下可能不適用於您,但您可以使用cron作業調用加載所需信息的PHP腳本,然後將其緩存到更快的數據源(XML或數據庫)。

如果信息經常更新或需要加載很多不同的數據,但這是一個選項,這可能不起作用。我已經將這種方法用於需要花費大量時間才能完成的其他任務,並且發現它是一個合理的解決方案。

2

我強烈推薦的memcache對於這種情況,因爲它會:

  1. 減少DNS電話。
  2. 減少頁面延遲。
  3. 減少帶寬使用量。

你唯一真正的任務是確定你正在處理的數據多久會發生變化。這將幫助您優化緩存密鑰的到期時間。