关于缓存的小问题

对一个框架 开启缓存之后 如果把对应缓存目录下的文件缓存全部删掉 那么页面是不是就显示为空了(因为没有缓存可以读取),是这样的吗?还是其他

谢谢

回复讨论(解决方案)

不会,如果没有获得缓存,会去请求原始数据源;

缓存的原理:

$data=getfromcache();
if(!empty($data)){
return $data;
}
$data=gerfromsource();
return $data;

不会,如果没有获得缓存,会去请求原始数据源;

缓存的原理:

$data=getfromcache();
if(!empty($data)){
return $data;
}
$data=gerfromsource();
return $data;

那请问您,为什么项目运行的时候,比如thinkphp 为什么每次在runtime下的cache文件都会重新生成一次,这个模板缓存的文件是拿来干嘛的,每次都生成一次,那什么时候去读取呢

对tp不了解,具体的细节解答帮不了你。

建议对几个方向进行研究:

(1)cache的生成和过期策略:个人猜测每次运行重新生长cache和过期策略有关

(2)cache的使用策略:大的原理就是第一个回复中写的,至于tp模板在什么时候去读取,建议看tp源码

上面的伪代码不完整,补充上完整的

$data=getfromcache();
if(!empty($data) && !expire($data)){
return $data;
}
$data=getfromsource();
savecache($data,expired_time);
return $data;

对tp不了解,具体的细节解答帮不了你。

建议对几个方向进行研究:

(1)cache的生成和过期策略:个人猜测每次运行重新生长cache和过期策略有关

(2)cache的使用策略:大的原理就是第一个回复中写的,至于tp模板在什么时候去读取,建议看tp源码

我没有表述清楚 ,其实想问的是,php模板编译缓存的作用是什么呢,而thinkphp里面rutime、cache下就是模板编译的文件,如果说模板编译的文件作用是让php可以不用继续编译,而是直接使用编译好的文件,既然直接使用,为什么每次运行又重新生成呢

不是,当缓存为空时,会自动重新创建的。

thinkphp也不是每次都重新更新编译后的php的,只是模板更新了才重新编译。

注意调试模式的影响

关于缓存的小问题0

Posted in 未分类

发表评论