【发布时间】:2010-04-05 00:26:08
【问题描述】:
我在谷歌应用引擎上的应用返回内容项(只是文本)和它们上的 cmets。它的工作原理是这样的(伪代码):
query: get keys of latest content #query to datastore
for each item in content
if item_dict in memcache:
use item_dict
else:
build_item_dict(item) #by fetching from datastore
store item_dict in memcache
send all item_dicts to template
抱歉,如果代码无法理解。我获取所有内容字典并将它们发送到模板,模板使用它们来创建网页。
我的问题是,如果 memcache 已过期,对于我要显示的每个项目,我必须 (1) 在 memcache 中查找项目,(2) 由于不存在 memcache,我必须从数据存储中获取项目,以及 (3 ) 将项目存储在内存缓存中。这些调用迅速增加。
我没有为 memcache 中的条目设置过期时间,所以这实际上只在早上发生一次,但是网页需要足够长的时间来加载(约 1 秒),浏览器会报告它不存在。通常,我的网页加载大约需要 50 毫秒。
这种方法适用于频繁访问,但存在如上所示的缺陷。我该如何补救?这些条目足够动态,我认为缓存我的初始请求不符合我的最大利益。
提前致谢
【问题讨论】:
标签: google-app-engine performance