多应用+插件架构,代码干净,二开方便,首家独创一键云编译技术,文档视频完善,免费商用码云13.8K 广告
# 静态缓存 [上一页](# "上一页")[下一页](# "下一页") ThinkPHP内置了静态缓存的功能,并且支持静态缓存的规则定义。 要使用静态缓存功能,需要开启**HTML_CACHE_ON** 参数,并且使用**HTML_CACHE_RULES**配置参数设置静态缓存规则文件 。 静态规则的定义方式如下:`'HTML_CACHE_ON'=>true, 'HTML_CACHE_RULES'=> array(     'ActionName'            => array('静态规则', '静态缓存有效期', '附加规则'),      'ModuleName(小写)'            => array('静态规则', '静态缓存有效期', '附加规则'),      'ModuleName(小写):ActionName' => array('静态规则', '静态缓存有效期', '附加规则'),     '*'                     => array('静态规则', '静态缓存有效期', '附加规则'),     //…更多操作的静态规则 )`静态缓存文件的根目录在HTML_PATH 定义的路径下面,并且只有定义了静态规则的操作才会进行静态缓存,注意,静态规则的定义有三种方式: 第一种是定义全局的操作静态规则,例如定义所有的read操作的静态规则为 `'read'=>array('{id}','60')` 其中,{id} 表示取$_GET['id'] 为静态缓存文件名,第二个参数表示缓存60秒 第二种是定义全局的模块静态规则,例如定义所有的User模块的静态规则为 `'user:'=>array('User/{:action}_{id}','600')` 其中,{:action} 表示当前的操作名称 静态 第三种是定义某个模块的操作的静态规则,例如,我们需要定义Blog模块的read操作进行静态缓存`'blog:read'=>array('{id}',0)`有个别特殊的规则,例如空模块和空操作的静态规则的定义,可以使用下面的方式:`'empty:index'=>array('{:module}_{:action}',0)  // 定义空模块的静态规则 'User:_empty'=>array('User/{:action}',0)  // 定义空操作的静态规则`第四种方式是定义全局的静态缓存规则,这个属于特殊情况下的使用,任何模块的操作都适用,例如`'*'=>array('{$_SERVER.REQUEST_URI|md5}'),` 根据当前的URL进行缓存 静态规则是用于定义要生成的静态文件的名称,写法可以包括以下情况 1、使用系统变量 包括 _GET _REQUEST _SERVER _SESSION _COOKIE 格式:`{$_×××|function}`例如:`{$_GET.name} {$_SERVER. REQUEST_URI|md5}`2、使用框架特定的变量 例如:{:app}、{:group} 、{:module} 和{:action} 分别表示当前项目名、分组名、模块名和操作名 3、使用_GET变量 {var|function} 也就是说 {id} 其实等效于 {$_GET.id} 4、直接使用函数 {|function} 例如:{|time} 5、支持混合定义,例如我们可以定义一个静态规则为: '{id},{name|md5}' 在{}之外的字符作为字符串对待,如果包含有”/”,会自动创建目录。 例如,定义下面的静态规则: {:module}/{:action}_{id} 则会在静态目录下面创建模块名称的子目录,然后写入操作名_id.shtml 文件。 静态有效时间 单位为秒如果不定义,则会获取配置参数HTML_CACHE_TIME 的设置值,如果定义为0则表示永久缓存。 附加规则通常用于对静态规则进行函数运算,例如`'read'=>array('Think{id},{name}','60', 'md5') `翻译后的静态规则是 md5('Think'.$_GET['id']. ', '.$_GET['name']); 和静态缓存相关的配置参数包括: HTML_CACHE_ON 是否开启静态缓存功能 HTML_FILE_SUFFIX 静态文件后缀 惯例配置的值是 .html HTML_CACHE_TIME 默认的静态缓存有效期 默认60秒 可以在静态规则定义覆盖 [上一页](# "上一页")[下一页](# "下一页")