早就知道Google改了GAE的配额收费方案,但一直想这里基本只有自己一人读写点日记,天荒地老也不会超额吧,没想到有此念头还不到两个月,果断有次500了,后台果然报了网上疯传的Datastore Read Operations超额,没办法了,只好拿memcache缓存优化了,说到底这也是官方的推荐做法。

用法超级简单:


...
from google.appengine.api import memcache
...

...
site = memcache.get("site")
if site is None:
	site = Site.all().get()
	memcache.add("site", site)
...

就是本来需要去数据中心查的操作,在之前先去内存缓存里找找,如果缓存还存在,就直接用了,省下了Datastore Read Operations,没有的话再去数据中心查一次,同时在放到缓存区供下次使用。

功能上丝毫无副作用,不影响原有的东西,但更新数据库时需要注意同时更新缓存,这个有点折腾。

效果还是明显的,之前动不动就占用30%,现在放心使用,一天撑死3%,更爽的是,速度也提升了一个档次。如果后续不够,还得找别的途径优化。毕竟memcache不是万能的。

现在还有个Frontend Instance Hours占用挺高的,有点担心,但不知道怎么降下来。