缓存和避免缓存内容

时间:2009-10-14 20:33:13

标签: php memcached

我有一个带有一些用户可编辑变量的小部件,这些变量很少被更新(可能只有在用户设置小部件时)。

我没有点击数据库,而是通过memcache缓存小部件用户变量。小部件内容定期更改。

我进行了设置,以便在用户创建或编辑其小部件时,小部件具有& noCache参数,该参数可避免缓存内容并向其显示小部件的最新版本。

关注的是用户将获取窗口小部件变量(包括noCache)并将其粘贴到某个页面,从而完全忽略缓存。

我正在考虑添加一个检查用户登录的组件,如果登录用户与小组件所有者匹配,则不要使用缓存。但是,这意味着每次加载窗口小部件时我都会检查用户会话,这可能不是我想要做的。

有关如何有效地执行此操作的任何其他建议?

99.999999%的小部件查看器将无法登录,因此我尝试为此添加最少的开销。

1 个答案:

答案 0 :(得分:2)

您应该做的是在将值保存到数据库时直接将值设置为memcached。这样,您可以通过缓存获取所有请求,并且不需要此解决方法。

请参阅memcached常见问题解答

中的Update memcache as your data updates

<强>更新

这并不意味着您必须将原始变量存储到内存缓存中。如果要存储渲染的页面,请务必再次渲染它并将该结果存储到memcache中。如果这太“太难”,你可以在更改数据库的同一页面中删除memcached中的旧数据,然后等待下一个请求在缓存中找不到它。