我很好奇.. 什么是“最有效”的缓存生成,比如说,一个 RSS 提要?或 API 响应(如对 的响应/api/films/info/a12345
)。
例如,我是否应该缓存整个提要,并尝试将其作为伪代码返回:
id = GET_PARAMS['id']
cached = memcache.get("feed_%s" % id)
if cached is not None:
return cached
else:
feed = generate_feed(id)
memcache.put("feed_%s" % id, feed)
return feed
还是缓存查询结果,每次都生成文档?
id = sanitise(GET_PARMS['id'])
query = query("SELECT title, body FROM posts WHERE id=%%", id)
cached_query_result = memcache.get(query.hash())
if cached_query_result:
feed = generate_feed(cached_query_result)
return feed
else:
query_result = query.execute()
memcache.put("feed_%s" % id, query_result)
feed = generate_feed(query_result)
(或者,我错过了其他方式?)