ecshop二次开发系统缓存优化之扩展数据缓存的必要性与方法
1、扩展数据缓存的必要性
大家都知道ecshop系统使用的是静态模板缓存,在后台可以设置静态模板的缓存时间,只要缓存不过期,用户访问页面就相当于访问静态页面,速度可想而知,看似非常完美,但是ecshop 有一个方法被滥用了,那就是 clear_cache_files() ,该方法会把整个系统的静态模板都清除掉,商家或者系统后台管理员只要在后台修改一下商品,或者修改个其他的东西,就会调用该方法将所有静态缓存都清掉,所以如果有商家频繁的修改商品,那么静态模板缓存其实是形同虚设,系统每次都会重新执行动态程序,对数据库也会产生较大的压力,那么就有必要将一些数据更新要求不高的数据缓存下来
2、扩展方式:
/include/lib_base.php 直接添加如下3个方法
/**
* 写入数据缓存
*
* @param string $key 数据文件的名称
* @param mix $value 缓存数据
* @param string $expire 过期时间,如果不传,怎永久有效
* @param integer $type 缓存类型: 0-文件缓存 后期可扩展其他缓存
*/
function write_data_cache($key, $value, $expire=null, $type=0) {
if(!isset($obj_filecache)) {
include_once ROOT_PATH . 'includes/cls_cachefile.php';
static $obj_filecache;
$obj_filecache = new CacheFile();
}
return $res = $obj_filecache->set($key, $value, $expire);
} /**
* 读取数据缓存
*
* @param string $key 数据文件的名称
* @param mix $value 缓存数据
* @param integer $type 缓存类型: 0-文件缓存 后期可扩展其他缓存
*/
function read_data_cache($key) {
if(!isset($obj_filecache)) {
include_once ROOT_PATH . 'includes/cls_cachefile.php';
static $obj_filecache;
$obj_filecache = new CacheFile();
}
return $data = $obj_filecache->get($key);
} /**
* 清除数据缓存
*
* @param string $key 数据文件的名称
*/
function clear_data_cache($key = '') {
if(!isset($obj_filecache)) {
include_once ROOT_PATH . 'includes/cls_cachefile.php';
static $obj_filecache;
$obj_filecache = new CacheFile();
}
if($key) {
$res = $obj_filecache->rm($key);
} else {
// 没有key 则删除全部缓存
$cache_path = $obj_filecache->cache_path;
$res = del_dir($cache_path);
}
return $res;
}
在需要用到的地方直接调用相应方法即可
2017-11-26 17:42:48 By BJR
ecshop二次开发系统缓存优化之扩展数据缓存的必要性与方法的更多相关文章
- ecshop二次开发之购物车常见问题
1.ecshop二次开发中保存注册用户购物车数据解决方法:ecshop购物车是数据库中cart表来支持的,在ecshop表中rec_id是编号,user_id是注册用户的id,session_id表示 ...
- ECSHOP二次开发指南
ECSHOP二次开发指南 发布时间:2013-05-28 12:47:00 来源: 评论:0 点击: 次 [字号:大 中 小] QQ空间新浪微博腾讯微博人人网豆瓣网百度空间百度搜藏开心网复制更 ...
- EcShop二次开发系列教程–总纲
EcShop作为老牌的B2C独立网店系统,功能非常全名,强大的文件.数据库缓存机制,保证前后台系统执行速度更快.系统平稳运行.但是过多的功能也或多或少的会影响到系统的整个效率,所有在使用EcShop搭 ...
- EcShop二次开发学习方法和Ecshop二次开发必备基础
ecshop二次开发学习方法 近年来,随着互联网的发展,电子商务也跟着一起成长,B2B,C2C,B2C的电子商务模式也不断的成熟.这时催生出了众多电子商务相关的php开源产品.B2C方面有Ecshop ...
- Ecshop二次开发必备基础
EcShop二次开发学习方法 近年来,随着互联网的发展,电子商务也跟着一起成长,B2B,C2C,B2C的电子商务模式也不断的成熟.这时催生出了众多电子商务相关的PHP开源产品.B2C方面有Ecshop ...
- ECShop二次开发指南(一)
ECSHOP是一套完整的网络商店解决方案,包括前台的商品展示.购物流程和强大易用的后台管理.由于 ecshop简单易用,使用者几乎可以在3几分钟简单的设置一下就可以拥有一个网上商店系统,所以很多的B2 ...
- EcShop二次开发学习方法
EcShop二次开发学习方法 (2012-03-08 11:10:08) 转载▼ 标签: 京东 公用函数库 二次开发 sql语言 数据库设计 杂谈 分类: ecshop 近年来,随着互联网的发展,电子 ...
- ecshop二次开发 给商品添加自定义字段
说起自定义字段,我想很多的朋友像我一样会想起一些开源的CMS(比如Dedecms.Phpcms.帝国)等,他们是可以在后台直接添加自定义字段的. 抱着这种想法我在Ecshop的后台一顿找,不过肿么都木 ...
- 微信小程序开发:学习笔记[9]——本地数据缓存
微信小程序开发:学习笔记[9]——本地数据缓存 快速开始 说明 本地数据缓存是小程序存储在当前设备上硬盘上的数据,本地数据缓存有非常多的用途,我们可以利用本地数据缓存来存储用户在小程序上产生的操作,在 ...
随机推荐
- Golang Json测试
结构体是谷歌搜索API package main import ( "encoding/json" "fmt" "io/ioutil" &q ...
- laravel连接数据库提示mysql_connect() :Connection refused...
在.env配置文件中填写了正确的数据库连接配置的情况下连接还是出错了,明显提示的不是密码错误,那就看看端口吧, DB_HOST=127.0.0.1 DB_PORT= DB_DATABASE=test ...
- Goroutine 中执行匿名函数 坑
//相对应for 循环 goroutine跑到慢 所以这里很大概率只会打印最后一条数据 func goRun() { values := []int{1, 2, 3} for _, v := rang ...
- 04 Django模板
基本概念 作为Web框架,Django提供了模板,用于编写html代码,还可以嵌入模板代码更快更方便的完成页面开发,再通过在视图中渲染模板,将生成最终的html字符串返回给客户端浏览器 模版致力于表达 ...
- 基于IAR6或者IAR7建立STM32开发工程(通过实际测试,使用IAR6.30.4)
IAR和keil两个开发平台都是arm开发当中比较流行的平台,keil4的版本之间,可以兼容,但是版本4和版本5还是不兼容的,但是IAR的兼容性更加差,好像6.30.x之间是能够兼容的吧,没有实测过, ...
- bash循环for/while/until
shell流程控制之一:for循环 for VAR in LIST; do STATEMENT1 ... done 例: ...
- .Net Task常见问题
最近尝试使用一下Task,但是使用过程中因为API的不熟悉碰到了很多问题,不清楚什么时间来调用Task.Start(),具体该怎么使用等等. 如下所描述的Task.Start()方法均为实例方法. 1 ...
- Oracle Flashback(flashback table或drop)
在Oracle 10g中,Flash back家族分为以下成员:Flashback DatabaseFlashback DropFlashback TableFlashback Query(分Flas ...
- csrf 攻击及防御
1.什么是CSRF攻击: CSRF(Cross-site request forgery),中文名称:跨站请求伪造,也被称为:one click attack/session riding,缩写为:C ...
- 零基础学习 Python 之前期准备
写在之前 从今天开始,我将开始新的篇章 -- 零基础学习 Python,在这里我将从最基本的 Python 写起,然后再慢慢涉及到高阶以及具体应用方面.我是完全自学的 Python,所以很是明白自学对 ...