自一年前以来,我一直在使用 Google App Engine 进行开发,并且我了解实例的预热时间有多重要。所以我最终有了一个想法:是否可以在 memcache 中缓存单例?例如,我将单例模式用于 JDO PersistenceManagerFactory。
这是我的实际代码(如文档中所述):
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>);