#1 jake
SpeedAction缓存,这是我最近在思考的一个缓存机制,通过路由前和路由后两个扩展点,直接将设定的action缓存起来。这是介乎spCache和spHtml之间的缓存机制,也就是说,spCache最灵活、缓存范围小、操作容易,加速效果主要是减轻数据库查询。spHtml不灵活,操作较复杂,缓存范围大,加速效果是整个页面。而spAction较灵活,缓存范围大,加速效果主要是整页缓存,操作方面目前正在研究如何比较容易些。
spAction扩展目前尚未完成,仅为测试版
扩展下载:spAction.zip
设置及使用:(下载文件解压,将spAction.php文件放到框架Extensions目录)
$spConfig = array(
...
'launch' => array(
'router_prefilter' => array(
array('spAction', 'action'), // 一定要是router_prefilter的最后一个
),
'router_postfilter' => array(
array('spAction', 'cache'),
),
),
'ext' => array(
'spAction' => array(
'main@index' => true,
'main@show' => array('tid','by'),
),
),
...
);
配置router_prefilter和router_postfilter两个扩展点。然后ext内设置spAction,配置方式如下:
1. 如果希望仅为该页面缓存,而忽略参数,则可以直接“控制器@动作”等于TRUE,通常用于首页,关于之类的页面。
'main@index' => true,
2. 如果页面需要根据传入的参数不同而变化,按参数的不同来进行缓存。那么就应该找出全部可变化的参数,放到“控制器@动作”的数组里面。
'main@show' => array('tid','by'),
那么main/show这个动作,就会根据tid和by(“与”关系)的不同来进行缓存。
比如说:
http://localhost/index.php?c=main&a=show&tid=100
http://localhost/index.php?c=main&a=show&tid=101
会产生两份不同的缓存文件。
2011-02-25 16:10:53