<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Terrysco&#039;s Blog &#187; cache</title>
	<atom:link href="http://www.terrysco.com/node/tag/cache/feed" rel="self" type="application/rss+xml" />
	<link>http://www.terrysco.com</link>
	<description>仅关注于互联网行业， Linux平台开发。</description>
	<lastBuildDate>Sat, 05 Nov 2011 21:24:06 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.2.1</generator>
		<item>
		<title>浅谈drupal的cache</title>
		<link>http://www.terrysco.com/node/drupal-cache.html</link>
		<comments>http://www.terrysco.com/node/drupal-cache.html#comments</comments>
		<pubDate>Sun, 03 May 2009 17:26:26 +0000</pubDate>
		<dc:creator>terrysco</dc:creator>
				<category><![CDATA[CMS/FrameWork]]></category>
		<category><![CDATA[cache]]></category>
		<category><![CDATA[drupal]]></category>

		<guid isPermaLink="false">http://www.anyliv.com/www.terrysco.com/?p=90</guid>
		<description><![CDATA[<p>drupal的cache机制其实很简单，主要的函数就那么几个，这里需要具体说明的有：菜单缓存，过滤器缓存和系统配置缓存。</p><p>菜单缓存很容易理解，把drupal的声明了缓存条件的菜单序列化成字符串存到缓存表中，需要的时候直接读取出来，也就是写menu钩子的时候，if ($may_cache)后面的菜单会缓存，所以在开发的时候如果定义了新的回调函数，没有清空cache_menu表，是不起作用的，原理很简单。</p><p>过滤器缓存。drupal的数据文本处理是用过滤器实现的，你不必直接对用户数据进行处理（意味着更改或者删除），因为drupal有一个原则&#8220;不要更改用户的数据&#8221;，也就是说db中存的是用户原始输入的数据。而为了安全和某些情况考虑，我们需要更改这些数据怎么办？就要用到过滤器，使用过滤器规则处理后的数据会放在过滤器缓存中，比如node的body部分内容。</p><p>...</p>
]]></description>
			<content:encoded><![CDATA[<p>drupal的cache机制其实很简单，主要的函数就那么几个，这里需要具体说明的有：菜单缓存，过滤器缓存和系统配置缓存。</p>
<p>菜单缓存很容易理解，把drupal的声明了缓存条件的菜单序列化成字符串存到缓存表中，需要的时候直接读取出来，也就是写menu钩子的时候，if ($may_cache)后面的菜单会缓存，所以在开发的时候如果定义了新的回调函数，没有清空cache_menu表，是不起作用的，原理很简单。</p>
<p>过滤器缓存。drupal的数据文本处理是用过滤器实现的，你不必直接对用户数据进行处理（意味着更改或者删除），因为drupal有一个原则&ldquo;不要更改用户的数据&rdquo;，也就是说db中存的是用户原始输入的数据。而为了安全和某些情况考虑，我们需要更改这些数据怎么办？就要用到过滤器，使用过滤器规则处理后的数据会放在过滤器缓存中，比如node的body部分内容。</p>
<p>大家都知道，drupal的很多配置信息，使用variable_set函数写进variables表中的数据，都是以一个全局大数组的形式放在系统中的，从而提高drupal性能，而这个大数组也是在缓存中的。你使用variable_set的时候会自动对缓存进行更新。也就是说如果你手动修改了variables表中的内容，是不能更改drupal配置的，原因就是配置是从缓存中读取的，除非清空了缓存。</p>
<p>大体的缓存就是这么多了，另外说下缓存库表的设计。每个字段的含义就不说了，一看就明白，它是分为单独的几个结构相同的表存储的，这个设计只是为了避免数据量太大的表。如果你自己的模块要使用到缓存功能，可以自己建立自己的缓存表，比如product_cache（产品缓存），但是表结构必须和cache表完全相同（就算你用不到其中的某个字段）。</p>
<p>用好缓存，提高你的站点性能。</p>
]]></content:encoded>
			<wfw:commentRss>http://www.terrysco.com/node/drupal-cache.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

