SpeedAction页面缓存扩展

#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

#2 vip

先顶了再看。

2011-02-25 16:32:49

#3 starlight36

mark。字数字数字数

2011-02-25 17:14:42

#4 jiayan41

缓存范围越来越小,继续跟进吧~

2011-02-26 10:54:26

#5 Pony

1.建议增加session传入参数作为缓存依据
2.如果按照当前的方法缓存,开销可能有点大

2011-02-27 01:42:39

#6 jake

1.建议增加session传入参数作为缓存依据
2.如果按照当前的方法缓存,开销可能有点大 ...
Pony 发表于 2011-2-27 01:42
session作为传入参数也是可以的,我的想法是session可以作为更新缓存的依据。这个当前方法进行缓存,开销方面是这样的:1.我原来的想法是这个缓存可以结合伪静态,那么几乎可以达到生成静态HTML的效果,毕竟静态生成HTML比较不那么灵活,2.有了当前方法缓存,那么也要有“当前方法怎么不缓存(更新)”的设置才可以。

2011-02-27 09:26:36

#7 vsxp

再来观望……

2011-03-10 16:32:56

#8 anythink

还在测试?

2011-07-22 13:45:06

#9 jake

回复 8 anythink


   已经合并到另一个程序里面了,具体等公开测试时就知道了

2011-07-22 15:23:00

#10 anythink

原来如此~~~

2011-07-22 16:43:17

#11 hygzs

赞一个:)

2011-08-31 15:43:33

#12 lkmtdgt

应该给SPCMS在后台专门做个全站缓存更新的,方便伪静态和动态站点,静态的还稍微麻烦点。

2011-10-12 23:49:02

#13 youngqj

很久不来了,是不是错过了什么精彩的了

2011-10-14 00:05:31

#14 lkmtdgt

今天下午跟我们的技术团队也讨论了下这个关于缓存方面的,的确应该有这个功能扩展

2011-10-14 19:45:45

#15 lkmtdgt

今天下午跟我们的技术团队也讨论了下这个关于缓存方面的,的确应该有这个功能扩展

2011-10-14 19:45:47