如果我想在此处的教程中使用查询缓存:
我是否应该在每个表中都有一个update_time字段?
$dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');
该字段是否必须存在才能使用查询缓存?
如果我想在此处的教程中使用查询缓存:
我是否应该在每个表中都有一个update_time字段?
$dependency = new CDbCacheDependency('SELECT MAX(update_time) FROM tbl_post');
该字段是否必须存在才能使用查询缓存?
The guide only gives you an example, how you can use a cache dependency with query caching, but a dependency is not mandatory. If you use one, you can come up with your own SQL to find out, if the cached content is still valid. So the update_time
field is also not mandatory.
回答你的问题,正如迈克尔已经写的那样,这不是强制性的。要了解更多信息,您应该了解依赖查询所扮演的角色。
考虑一个例子。您想要缓存将列出所有用户的查询。类似的东西SELECT * FROM users
。假设在任何时间点都是 100 个用户。
现在的主要问题是您认为您的缓存数据何时变得无效?每当添加新用户时,都需要重新查询(不使用缓存数据/无效缓存数据)。如何找到添加了新用户?通过查询身份证号。因此,如果查询SELECT MAX(ID) FROM Users
返回不同的值,则表示添加了新用户。
请记住,如果用户被删除,那么我的示例将无效。那个时候,删除用户后,你应该删除Respective Cache Data。
这样,您应该找出可用于验证缓存数据的相关查询。