3
五/09
0

浅谈drupal的cache

drupal的cache机制其实很简单,主要的函数就那么几个,这里需要具体说明的有:菜单缓存,过滤器缓存和系统配置缓存。

菜单缓存很容易理解,把drupal的声明了缓存条件的菜单序列化成字符串存到缓存表中,需要的时候直接读取出来,也就是写menu钩子的时候,if ($may_cache)后面的菜单会缓存,所以在开发的时候如果定义了新的回调函数,没有清空cache_menu表,是不起作用的,原理很简单。

过滤器缓存。drupal的数据文本处理是用过滤器实现的,你不必直接对用户数据进行处理(意味着更改或者删除),因为drupal有一个原则“不要更改用户的数据”,也就是说db中存的是用户原始输入的数据。而为了安全和某些情况考虑,我们需要更改这些数据怎么办?就要用到过滤器,使用过滤器规则处理后的数据会放在过滤器缓存中,比如node的body部分内容。

大家都知道,drupal的很多配置信息,使用variable_set函数写进variables表中的数据,都是以一个全局大数组的形式放在系统中的,从而提高drupal性能,而这个大数组也是在缓存中的。你使用variable_set的时候会自动对缓存进行更新。也就是说如果你手动修改了variables表中的内容,是不能更改drupal配置的,原因就是配置是从缓存中读取的,除非清空了缓存。

大体的缓存就是这么多了,另外说下缓存库表的设计。每个字段的含义就不说了,一看就明白,它是分为单独的几个结构相同的表存储的,这个设计只是为了避免数据量太大的表。如果你自己的模块要使用到缓存功能,可以自己建立自己的缓存表,比如product_cache(产品缓存),但是表结构必须和cache表完全相同(就算你用不到其中的某个字段)。

用好缓存,提高你的站点性能。

关键字: ,