sharehua
(8080268)
1
首页是一个片断缓存大杂烩。
假设某个ar保存或者删除,相应的片段缓存会受到影响,就让受到影响的缓存重新生成。
这就得控制缓存不仅能删除,还可以重新生成。
目前删除做法是这样,取消 $varyByRoute $varyByExpression ,在ar的afterSave和afterDelete里面删除影响到得缓存的Id。
我没有去研究代码,就用了个笨方法。
$str=file_get_contents(‘http://localhost’.CHtml::normalizeUrl(array(’/web/default/index’)),FALSE,$xcontext);
通过这个访问首页,让缓存主动生成。但这样做后,发现系统很不稳定。
主页面舍去了dependency,因为是被动的,当有请求才检查缓存。希望请求来之前,就准备好缓存了。
punkwang
(27612285)
2
我研究了 重写COutputCache 的 getCacheKey 只返回自己设置的key 不做其他操作
重写 CController 和 CWidget 的 beginCache 把 ‘COutputCache’ 改成自己扩展的 COutputCache 即可
sharehua
(8080268)
3
强 必须要重写COutputCache 的 getCacheKey 吗?没有别的方法?
sharehua
(8080268)
5
建议beginCache改成,如果有id传进来,则保持原来的id,如果没有才根据$varyByRoute $varyByExpression 来生成Id。
sharehua
(8080268)
6
还有 建议 delete方法 支持, 前缀删除,例如 含有某字符串开头的 缓存 被删除。delete(id,prefix)
qiang
(Qiang Xue)
7
关于cachekey,我们已经有一个ticket了,希望能保持id。我们会给出一个解决方案的。
sharehua
(8080268)
8
提前生成cache呢?让页面一直都存在缓存,我用的
file_get_contents('http://localhost'.CHtml::normalizeUrl(array('/web/default/index')),FALSE,NULL);
来生成,但发现会出错,还没弄明白错误原因。
还发现做的系统很耗内存,不清楚哪里出了问题,请问怎么查看内存情况。