redis实现web页面缓存
2017-06-04 18:22
169 查看
1、网页缓存
在动态生成网页的时候通常会使用模板语言来简化网页的生成操作,现在的web网页通常由头部、尾部、侧栏菜单、工具条、内容域的模板生成,有时候模板还用于生成javascript,但是对于一些不经常发生变化的页面,并不需每次访问都动态生成,对这些页面进行缓存,可以减少服务器的压力缓存思路
在处理请求之前添加一个中间件,由这个中间件来调用redis缓存函数,对于不能缓存的页面,函数直接生成页面并返回;而能够缓存的页面,函数首先从redis缓存中去取出并返回缓存页面,如果缓存页面不存在则生成并缓存到redis数据库中5分钟
php逻辑代码
public function cache_request(){ if(!$is_cache){ //生成缓存页面并返回 return $this->template->bulde($view); } $page_key = 'cache:'.$view; $content = $this->redis->get($page_key); if(!$content){ $content = $this->template->bulde($view); $this->redis->settx($page_key,$content,300); } return $content; }
2、数据行缓存
通过网页缓存缓存已经大大的提高了网页加载的速度,而对于那些无法缓存的页面程序也可以通过数据行缓存来提高他们的加载速度实现思路
编写一个持续运行的守护进程函数,让这个函数将指定数据行缓存到redis里面,并不定期对数据行缓存进行更新,数据行内容为json数据格式的字符。创建两个有序集合来记录何时对数据行进行更新。
一个为调度有序集合,成员为数据行ID,分值为当前时间戳
另一个为延时有序集合,成员为数据行ID,分值则记录延时多久缓存一次
将需要缓存的数据行加入到延时有序集合和调度有序集合,分值初始值为延时时间,当前时间戳。
守护进程函数从调度有序集合中取出第一行数据行ID,进行数据行缓存,缓存完毕,更新调度有序集合数据行ID的分值为当前时间戳+延时时间
php逻辑代码
调度函数:schedule_row_cache
public function schedule_row_cache($row_id , $delay){ $this->redis->zadd('delay:',$row_id,$delay); $this->redis->zadd('schedule:'.$row_id,time()); }
守护进程函数:cache_row
public function cache_row(){ while(true){ $next = $this->redis->zrange('schedule:',0,0,withscores=TRUE); $now = time(); if(!$next){ continue; } $row_id = $next[0][0]; $delay = $this->redis->zscore('delay:',$row_id); if($delay <= 0){ $this->redis->zrem('schedule:',$row_id); $this->redis->zrem('delay:',$row_id); $this->redis->delete('cache_row:'.$row_id); } //这里Inventory的功能是获取数据行,返回的是json字符串 $row = Inventory.get($row_id); $this->redis->zadd('schedule:',($row_id,$now+$delay)); $this->redis->set('cache_row:'.$row_id,$row); } }
相关文章推荐
- WEB 页面缓存的实现 --OSCache
- web项目缓存配置及单点登录借助redis实现
- nginx+redis 实现 jsp页面缓存,提升系统吞吐率
- nginx+redis 实现 jsp页面缓存,提升系统吞吐率
- 学习SpringBoot+Redis 实现页面缓存
- Haproxy + Varnish 实现WEB静态页面缓存
- java web filter实现浏览器不缓存页面
- java web filter实现浏览器不缓存页面
- 使用redis实现页面缓存
- nginx+redis 实现 jsp页面缓存,提升系统吞吐率
- 实现Web页面上的右键快捷菜单
- WEB页面同时实现两种打印(下载Excel,页面直接打印)
- WEB页面内实现可编辑选择框的方法
- 编写web打印程序,实现打印预览,直接打印 ,页面设置 ,关闭
- 用DHTML在Web页面实现多媒体显示效果
- 实现将Web页面的内容,Export To Excel的功能
- 用WebService实现web页面的局部刷新
- 用JavaScript脚本实现Web页面信息交互
- web打印,巧妙实现隐藏不想打印的页面元素,以及页眉和页脚
- WEB页面内实现可编辑选择框的方法