回忆未来(372647693) 15:40:50
近来遇到smarty缓存问题,当一个模板被新的模板替代后,其输出没有变化,但模板已经变了,这种问题偶尔会出现,不知道是怎么一回事。。。
[Tx]向东(372647693) 15:42:29
偶尔会出现,刚开始以为是没有上传新模板上去或者属组问题,但发现不是这个问题,楼上的什么意思?
vacas(905876351) 15:43:37
你检查一下这个模板有可能被缓存在哪儿
服务器文件 内存 浏览器
[Tx]向东(372647693) 15:44:10
说白了就是那个:template_c 这个目录没有给更新。
vacas(905876351) 15:41:46
内存有缓存...
David(254091767) 15:41:20
缓存没有更新的
解析模板时,会生成一个缓存文件,这个缓存文件没有更新,所以就没有变化
竖琴螺(421033770) 15:42:01
把缓存文件全删掉
David(254091767) 15:42:07
你把浏览器的缓存清一下,再次打开,就没有这个问题了
还有浏览器的缓存呢?
我最近开发的项目,也是老遇到这个问题
竖琴螺(421033770) 15:42:44
之前好像也遇见过,是怎么解决的也忘了,呵呵
莫莫<happy.yin@qq.com> 15:43:09
我差了 你们还用SMARTY那??
框架 里自身就有缓存机制了
回忆未来(372647693) 15:43:27
浏览器强制刷新了的。
WANG(896186882) 15:43:54
smarty的模板缓存清掉
竖琴螺(421033770) 15:43:57
_templates_c里的文件都删除掉
然后刷新页面
竖琴螺(421033770) 15:46:35
smarty的缓存开关变量是$caching
回忆未来(372647693) 15:47:29
但是加一个新的模板应该会自动去重新编译一次啊,但就是没有做这事情,不是说根据修改时间比对会去重新编译一次新模板的么?但偶尔会没有做
回忆未来(372647693) 15:44:29
说白了就是那个:template_c 这个目录没有给更新。 是不是smarty的一个bug啊。
[CIECC]NVSky(365650070) 15:45:05
把TC干掉
[free]你懂得(337207961) 15:59:39
直接看编译以后的模板的生成时间跟你的模板更改时间一致吗
[Tx]向东(372647693) 16:00:35
嗯,我觉得是由于某种原因导致判断没有更新模板,导致根本没有编译。
这种几率很少发生,但时有发生。
[free]你懂得(337207961) 16:02:42
你先看看啊,编译后的模板里边有模板的最新生成时间
[Tx]向东(372647693) 16:04:05
没有吧?还是我没有找到,在哪儿?
<?php /* Smarty version 2.6.18, created on 2012-05-24 09:37:07
这玩意?
[free]你懂得(337207961) 16:04:53
嗯
[Tx]向东(372647693) 16:05:39
这个时间是老的时间,所以,没有把新模板的改动给加进来。
就把这个模板给丢给浏览器了。所以,一直是老的模板,新的模板没有给重新编译。
[TX]-金灶沐(86297986) 16:06:43
你应该干掉缓存啊
[free]你懂得(337207961) 16:06:45
smarty有个重新编译的选项吧,试了吗
[TX]-金灶沐(86297986) 16:06:50
你是不是is_cache了
[Tx]向东(372647693) 16:07:22
什么选项?
一个一个来,我是替那帮微博开放平台的兄弟们排查一下,再就是我自己偶尔会有这样的问题,所以,想聊出个水落石出。
[free]你懂得(337207961) 16:08:31
Example 13-9. clear_compiled_tpl
例子 13-9. 清除已编译模板
// clear a specific template resource// 清除指定模板资源的编译文件$smarty->clear_compiled_tpl("index.tpl");
// clear entire compile directory// 清除所有已编译的模板文件$smarty->clear_compiled_tpl();
[Tx]向东(372647693) 16:09:13
他们好像没,现在兄弟们都懒,想smarty自己判断有更新就编译呢。
[free]你懂得(337207961) 16:09:42
如果再不行的话只能找源码看了,新浪这边的发布系统也这样,主要是由其他延时
[TX]-金灶沐(86297986) 16:09:56
你是新浪的啊..
[Tx]向东(372647693) 16:10:04
嗯,多谢兄弟们。。。
[TX]-金灶沐(86297986) 16:10:05
smarty会自动找过期时间的..
我看源码的时候 他编译的时候回去看 然后对比..
[free]你懂得(337207961) 16:11:46
文件的更新时间也有缓存
[free]你懂得(337207961) 16:14:52
金灶沐 那个作对比用的什么方法啊,是调用的受clearstatcache影响的函数吗
[free]你懂得(337207961) 16:15:49
我就是再说这个问题,如果用的clearstatcache影响的方法可能判断出错
可能文件有缓存,smary在做相关操作时用到调用的受clearstatcache影响的函数的缘故。
解决方法:
=============
也只有每次都必须给把那个smarty的template_c目录下的文件全给干掉了。
近来遇到smarty缓存问题,当一个模板被新的模板替代后,其输出没有变化,但模板已经变了,这种问题偶尔会出现,不知道是怎么一回事。。。
[Tx]向东(372647693) 15:42:29
偶尔会出现,刚开始以为是没有上传新模板上去或者属组问题,但发现不是这个问题,楼上的什么意思?
vacas(905876351) 15:43:37
你检查一下这个模板有可能被缓存在哪儿
服务器文件 内存 浏览器
[Tx]向东(372647693) 15:44:10
说白了就是那个:template_c 这个目录没有给更新。
vacas(905876351) 15:41:46
内存有缓存...
David(254091767) 15:41:20
缓存没有更新的
解析模板时,会生成一个缓存文件,这个缓存文件没有更新,所以就没有变化
竖琴螺(421033770) 15:42:01
把缓存文件全删掉
David(254091767) 15:42:07
你把浏览器的缓存清一下,再次打开,就没有这个问题了
还有浏览器的缓存呢?
我最近开发的项目,也是老遇到这个问题
竖琴螺(421033770) 15:42:44
之前好像也遇见过,是怎么解决的也忘了,呵呵
莫莫<happy.yin@qq.com> 15:43:09
我差了 你们还用SMARTY那??
框架 里自身就有缓存机制了
回忆未来(372647693) 15:43:27
浏览器强制刷新了的。
WANG(896186882) 15:43:54
smarty的模板缓存清掉
竖琴螺(421033770) 15:43:57
_templates_c里的文件都删除掉
然后刷新页面
竖琴螺(421033770) 15:46:35
smarty的缓存开关变量是$caching
回忆未来(372647693) 15:47:29
但是加一个新的模板应该会自动去重新编译一次啊,但就是没有做这事情,不是说根据修改时间比对会去重新编译一次新模板的么?但偶尔会没有做
回忆未来(372647693) 15:44:29
说白了就是那个:template_c 这个目录没有给更新。 是不是smarty的一个bug啊。
[CIECC]NVSky(365650070) 15:45:05
把TC干掉
[free]你懂得(337207961) 15:59:39
直接看编译以后的模板的生成时间跟你的模板更改时间一致吗
[Tx]向东(372647693) 16:00:35
嗯,我觉得是由于某种原因导致判断没有更新模板,导致根本没有编译。
这种几率很少发生,但时有发生。
[free]你懂得(337207961) 16:02:42
你先看看啊,编译后的模板里边有模板的最新生成时间
[Tx]向东(372647693) 16:04:05
没有吧?还是我没有找到,在哪儿?
<?php /* Smarty version 2.6.18, created on 2012-05-24 09:37:07
这玩意?
[free]你懂得(337207961) 16:04:53
嗯
[Tx]向东(372647693) 16:05:39
这个时间是老的时间,所以,没有把新模板的改动给加进来。
就把这个模板给丢给浏览器了。所以,一直是老的模板,新的模板没有给重新编译。
[TX]-金灶沐(86297986) 16:06:43
你应该干掉缓存啊
[free]你懂得(337207961) 16:06:45
smarty有个重新编译的选项吧,试了吗
[TX]-金灶沐(86297986) 16:06:50
你是不是is_cache了
[Tx]向东(372647693) 16:07:22
什么选项?
一个一个来,我是替那帮微博开放平台的兄弟们排查一下,再就是我自己偶尔会有这样的问题,所以,想聊出个水落石出。
[free]你懂得(337207961) 16:08:31
Example 13-9. clear_compiled_tpl
例子 13-9. 清除已编译模板
// clear a specific template resource// 清除指定模板资源的编译文件$smarty->clear_compiled_tpl("index.tpl");
// clear entire compile directory// 清除所有已编译的模板文件$smarty->clear_compiled_tpl();
[Tx]向东(372647693) 16:09:13
他们好像没,现在兄弟们都懒,想smarty自己判断有更新就编译呢。
[free]你懂得(337207961) 16:09:42
如果再不行的话只能找源码看了,新浪这边的发布系统也这样,主要是由其他延时
[TX]-金灶沐(86297986) 16:09:56
你是新浪的啊..
[Tx]向东(372647693) 16:10:04
嗯,多谢兄弟们。。。
[TX]-金灶沐(86297986) 16:10:05
smarty会自动找过期时间的..
我看源码的时候 他编译的时候回去看 然后对比..
[free]你懂得(337207961) 16:11:46
文件的更新时间也有缓存
[free]你懂得(337207961) 16:14:52
金灶沐 那个作对比用的什么方法啊,是调用的受clearstatcache影响的函数吗
[free]你懂得(337207961) 16:15:49
我就是再说这个问题,如果用的clearstatcache影响的方法可能判断出错
可能文件有缓存,smary在做相关操作时用到调用的受clearstatcache影响的函数的缘故。
解决方法:
=============
也只有每次都必须给把那个smarty的template_c目录下的文件全给干掉了。
作者:jackxiang@向东博客 专注WEB应用 构架之美 --- 构架之美,在于尽态极妍 | 应用之美,在于药到病除
地址:https://jackxiang.com/post/5275/
版权所有。转载时必须以链接形式注明作者和原始出处及本声明!
最后编辑: jackxiang 编辑于2012-5-30 16:19
评论列表