【学习笔记】thinkphp 生成静态缓存的雪崩问题
2017-08-08 17:06
483 查看
雪崩——————–就是指在做页面缓存是,如果网站的并发量在100【每秒有100个刷新】,在缓存页面失效的一瞬间,100个并发同时进入到后端数据库有可能让数据库崩溃。
当我在学习如果制作商城的时候,做到商城主页时,为了加快页面读取速度,用了静态缓存技术。
然而在用静态缓存是遇到了一个问题。即在对于并发问题没有得到处理
首先在配置文件代码
定好好之后可以看见到
我们先删除缓存界面
然后我们进行Apache的并发压力测试 -n20 -c20
在index方法中加入这两句测试并发压力
测试出来发现一瞬间会缓存20次,这无疑加大了数据库的压力。
解决办法
修改
2、还有一个更简单的方法,就是设置缓存时间在没人的时间,比如半夜去缓存,哈哈
如果觉得有用的话记得关注一下 ————如果有任何问题可以下方留言反馈哟!嘿嘿嘿
当我在学习如果制作商城的时候,做到商城主页时,为了加快页面读取速度,用了静态缓存技术。
然而在用静态缓存是遇到了一个问题。即在对于并发问题没有得到处理
首先在配置文件代码
<?php return array( 'HTML_CACHE_ON' => true, // 开启静态缓存 'HTML_CACHE_TIME' => 60, // 全局静态缓存有效期(秒) 'HTML_FILE_SUFFIX' => '.shtml', // 设置静态缓存文件后缀 'HTML_CACHE_RULES' => array( // 定义静态缓存规则 'index:index' =>array('index',86400),//首页生产index.shtml ), );
定好好之后可以看见到
我们先删除缓存界面
然后我们进行Apache的并发压力测试 -n20 -c20
在index方法中加入这两句测试并发压力
测试出来发现一瞬间会缓存20次,这无疑加大了数据库的压力。
解决办法
在TP框架中的C:\Users\11150\Desktop\47day\ThinkPHP\Library\Behavior\ReadHtmlCacheBehavior.class.php
修改
global $fp; //设置全局变量 $fp = fopen('./read.lock','r');//打开加锁文件 $rec = flock($fp,LOCK_EX);//允许一个客户缓存,堵塞其他客户 //剩下的客户访问第一个客户生产的缓存网页 ↓ if( false !== $cacheTime && $this->checkHTMLCache(HTML_FILE_NAME,$cacheTime)) { //静态页面有效 // 读取静态页面输出 echo Storage::read(HTML_FILE_NAME,'html'); exit(); }
2、还有一个更简单的方法,就是设置缓存时间在没人的时间,比如半夜去缓存,哈哈
如果觉得有用的话记得关注一下 ————如果有任何问题可以下方留言反馈哟!嘿嘿嘿
相关文章推荐
- 学习笔记:cache 和spring cache 技术---本地缓存-分布式缓存,缓存穿透,雪崩,和热点key的问题
- cocos2dx-3.x学习笔记二:随机数的生成及注意问题
- ajax学习笔记---解决浏览器缓存和中文乱码问题
- 0324的学习笔记----里面最重要的就是一个tom猫的动画,和涉及到的内存问题(创建imageview的两种方式,imagenamed就会形成缓存,占用很多内
- 学习笔记:Maven构造版本号的方法解决浏览器缓存问题
- php学习笔记:thinkphp问题记录
- ANDROID 学习笔记(二) 用户登陆问题 TOKEN SESSION 缓存
- 工作学习笔记——VS2010无法复制exe文件导致的工程生成失败问题
- 微信开发学习笔记(一):前端图片缓存问题
- 解决服务器缓存失效后可能导致的雪崩问题(thinkphp为例)
- php静态缓存学习-2.使用模板文件生成静态html
- apache学习笔记(日志切割|静态缓存|防盗链)
- Thinkphp学习笔记 调用Image类生成缩略图
- Silverlight学习笔记之Silverlight缓存问题
- servlet学习笔记---HttpServletResponse输出中文的问题和缓存问题
- ThinkPHP学习笔记(十六)使用视图(数据库视图)和缓存
- ThinkPHP5学习笔记(3)-静态公共资源的引入
- Java学习笔记-问问题?-->静态方法
- Thinkphp学习笔记-删除缓存
- ThinkPHP5学习笔记(1)-自动生成目录结构