如果我想在此处的教程中使用查询缓存:
我是否应该在每个表中都有 update_time 字段?
$dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');
该字段是否必须存在才能使用查询缓存?
答案 0 :(得分:3)
本指南仅为您提供了一个示例,如何使用查询缓存的缓存依赖关系,但依赖关系不是必需的。如果您使用一个,如果缓存的内容仍然有效,您可以提出自己的SQL来查找。因此update_time
字段也不是强制性的。
答案 1 :(得分:0)
回答你的问题,正如迈克尔已经写过的那样,这不是强制性的。 要了解更多相关信息,您应该了解依赖关系查询所扮演的角色。
考虑一个例子。您希望缓存将列出所有用户的查询。像SELECT * FROM users
这样的东西。
假设在任何时间点,它是100个用户。
现在主要的问题是你认为你的缓存数据什么时候变得无效?每当添加新用户时,您都需要重新查询(不使用缓存数据/无效缓存数据)。如何找到新用户?通过查询ID号。因此,如果查询SELECT MAX(ID) FROM Users
返回不同的值,则表示添加了新用户。
记住如果用户被删除,那么我的示例将无效。删除用户后,您应删除相应的缓存数据。
通过这种方式,您应该找到可用于验证缓存数据的相关查询。