12.6 查询缓存

对于及时性要求不高的数据查询,我们可以使用查询缓存功能来提高性能,而且无需自己使用缓存方法进行缓存和获取。
新版内置的查询缓存功能支持所有的数据库,并且支持所有的缓存方式和有效期。
在使用查询缓存的时候,只需要调用Model类的cache方法,例如:$Model->cache(true)->select();如果使用了cache(true) ,则在查询的同时会根据当前的查询SQL生成查询缓存,默认情况下缓存方式采用DATA_CACHE_TYPE参数设置的缓存方式(系统默认值为File表示采用文件方式缓存),缓存有效期是DATA_CACHE_TIME 参数设置的时间,也可以单独制定查询缓存的缓存方式和有效期:$Model->cache(true,60,'xcache')->select();表示当前查询缓存的缓存方式为xcache,并且缓存有效期为60秒。
同样的查询,如果没有使用cache方法,则不会获取或者生成任何缓存,即便是之前调用过Cache方法。
查询缓存只是供内部调用,如果希望查询缓存开放给其他程序调用,可以指定查询缓存的Key,例如:$Model->cache('cache_name',60)->select();则可以在外部通过S方法直接获取查询缓存的内容,$value = S('cache_name');除了select方法之外,查询缓存还支持find和getField方法,以及他们的衍生方法(包括统计查询和动态查询方法)。具体应用的时候可以根据需要选择缓存方式和缓存有效期。