自從一年前我開發Google App Engine並且我瞭解實例的熱身時間有多重要。 所以我最終提出了一個想法:是否有可能在memcache中緩存單例?例如,我爲JDO PersistenceManagerFactory使用了單例模式。在memcache中緩存單例
這裏是我的實際代碼(如文檔中所述):
private static PersistenceManagerFactory pmfInstance = JDOHelper.getPersistenceManagerFactory(<my-name>);
是否有任何意義類似延長的JDOHelper,寫這樣一個功能:
public static PersistenceManagerFactory getPersistenceManagerFactoryCached(String name) {
MemcacheService cache = MemcacheServiceFactory.getMemcacheService();;
PersistenceManagerFactory staticPMF= null;
if (cache.contains("JDO_PMF")) {
staticPMF = (PersistenceManagerFactory) cache.get("JDO_PMF");
} else {
staticPMF = JDOHelper.getPersistenceManagerFactory(name);
cache.put("JDO_PMF", staticPMF);
}
return staticPMF;
}
我的想法應緩存PersistenceManagerFactory以加速第一個實例,然後將其作爲單例使用:
private static PersistenceManagerFactory pmfInstance = JDOHelperCached.getPersistenceManagerFactory(<my-name>);
如果您擔心開銷,請停止使用JDO。 PMF必須加載一大堆與您的應用無關的數據 - 使用更適合該任務的內容,如Objectify,將會避免這種情況。 –