2009-10-14 237 views
0

我有一个小部件,将极少更新一些用户编辑变量(可能只有当用户设置了小工具)。缓存,避免缓存内容

而不是命中数据库中,我借助内存缓存缓存控件用户变量。小部件内容正在不断变化。

我有它的设置,以便当用户创建或编辑它们的小部件时,小部件有一个& noCache参数,它避免缓存的内容并向他们展示最新版本的小部件。

关注的是,用户要采取小部件变量(包括非缓存),并坚持认为到页面的某个地方,从而完全无视缓存。

我想将它检查用户的登录的组件,如果登录用户的窗口小部件的所有者相匹配,那么就不要使用缓存。但是,这意味着每次装入小部件时都会检查用户会话,这可能不是我想要做的。

有关如何有效地做到这一点的任何其他建议?小部件观众

99.999999%不会被记录在,所以我想以最小的开销增加了这一点。

回答

2

你应该做的是直接设置值到memcached的,你将它们保存到数据库中。通过这种方式,您可以通过缓存发送所有请求,并且不需要此解决方法。

Update memcache as your data updates在memcached的常见问题

UPDATE

这并不意味着你必须将原始变量存储到内存缓存。如果您正在存储呈现的页面,则通过所有方式再次渲染并将结果存储到memcache中。如果这太“难”,您可以在同一个页面中从memcached中删除旧数据,然后等待下一个请求在缓存中找到它。

+0

我不敢相信我没有想到!谢谢。 – pedalpete 2009-10-14 22:41:45

+0

哦等等!我不能那样做。我正在缓存php页面的结果,正如我在原始问题中提到的那样,页面的内容会经常变化(基于传递给窗口小部件的变量)。你的解决方案意味着我没有在php页面中设置变量,而是在memcache中设置变量。这仍然会减少数据库负载,但是构建页面的最快方法是将所有内容都保存在内存缓存中,而不仅仅是变量。 – pedalpete 2009-10-14 22:46:06