Dcloud课程5 php如何实现文件缓存技术(静态数据缓存)
Dcloud课程5 php如何实现文件缓存技术(静态数据缓存)
一、总结
一句话总结:保存在磁盘上的静态文件,用PHP生成数据到静态文件中。其实cookie和session使用的就是这样的技术,所以cookie和session的实现原理和下面代码超级像。
1、静态缓存技术(数据)是什么?
保存在磁盘上的静态文件,用PHP生成数据到静态文件中。其实cookie和session使用的就是这样的技术,所以cookie和session的实现原理和下面代码超级像。
2、Memcache和Redis的区别和联系是什么?
1)Memcache和Redis都是用来管理数据
2)他们数据都是存放在内存中
3)Redis可以定期将数据备份到磁盘(持久化)
4)Memcache只是简单的key/value缓存
5)Redis不仅仅支持简单的key/value类型的数据,同时还提供
list、hash等存储结构。
3、App获取数据的流程是怎样的?
如果文件中的数据没有过期,就从文件中获取,如果过期了,就从服务器端获取,顺便写一份到文件中。
而判断过期很好做。

4、如何判断文件是否过期?
过期时间: 0000000100为100秒
存储的时间: 1234334121
两个相加看是否超过当前时间,超过当前时间即为过期。
45 $cacheTime=substr($datas, 0,10);
46 $oldTime=substr($datas, -10);
47
48 if ($oldTime+$cacheTime>time()) {
49 # code...
5、如何优化网站运行速度?
设置文件静态缓存(数据),这里要区别页面的静态缓存
这样可以非常大的提高效率
二、php如何实现文件缓存技术(静态数据缓存)
1、相关知识
APP接口开发的核心技术
1)缓存技术
静态缓存技术
Memcache和redis技术
静态缓存技术
保存在磁盘上的静态文件,用PHP生
成数据到静态文件中。
PHP操作缓存
1)生成缓存
2)获取缓存
3)删除缓存
Memcache和Redis
1)Memcache和Redis都是用来管理数据
2)他们数据都是存放在内存中
3)Redis可以定期将数据备份到磁盘(持久化)
4)Memcache只是简单的key/value缓存
5)Redis不仅仅支持简单的key/value类型的数据,同时还提供
list、hash等存储结构。
2、代码
<?php
class Files{
public $dir;
public $ext='.txt';
public $path;
public function __construct(){
$this->dir=dirname(__FILE__).'/data/';
}
// 缓存数据
public function CacheData($data=null,$paths=null,$time=null,$file=null){
// 设置缓存文件
$this->path=$this->dir.$paths.$file.$this->ext;
if (!file_exists(dirname($this->path))) {
# code...
mkdir(dirname($this->path));
}
if ($data) {
// 设置数据
# code...
$str=sprintf('%010d',$time).$data.time();
file_put_contents($this->path, $str);
}else{
// 判断问文件存在
if (!file_exists($this->path)) {
# code...
return false;
}
// 删除缓存
if (is_null($data)) {
unlink($this->path);
return false;
}
// 定时更新
$datas=file_get_contents($this->path);
$cacheTime=substr($datas, 0,10);
$oldTime=substr($datas, -10);
if ($oldTime+$cacheTime>time()) {
# code...
return substr($datas,10,-10);
}else{
return false;
}
}
}
}
// include "Response.php";
// header('content-type:text/html;charset=utf-8');
// $model=new Files();
// // 删除缓存
// $model->CacheData(null,'/user/','','user');
// // 读取缓存
// if ($data=$model->CacheData('','/user/','','user')) {
// # code...
// $data=json_decode($data,true);
// var_dump($data);
// echo "从文件获取的数据";
// }else{
// // 设置缓存
// echo'设置数据';
// $data=array(
// array('name'=>'use1','age'=>"10"),
// array('name'=>'use2','age'=>"10"),
// array('name'=>'use3','age'=>"10"),
// array('name'=>'use4','age'=>"10"),
// array('name'=>'use5','age'=>"10"),
// );
// var_dump($data);
// $str=Response::datas('200','成功',$data);
// $model->CacheData($str,'/user/',20,'user');
// }
?>
Dcloud课程5 php如何实现文件缓存技术(静态数据缓存)的更多相关文章
- 我用ASP.NET缓存之SQL数据缓存依赖(SqlCacheDependency)
[名词解释] 缓存(Cache)依赖,大白话解释就是缓存是否更新依赖于其它Object.那么SqlCacheDependency指的就是Cache的数据更新依赖于SQL Server数据库表的变化( ...
- web开发人员须知的web缓存知识–将数据缓存到浏览器端Net实现
现实中,服务器在向浏览器发送的数据中,一部分数据是不经常更新的,如果能将这部分数据缓存到浏览器端,将会大大降低传输的数据,提高应用的性能.通过Expires策略,可以使用HTTP 协议定义的缓存机制将 ...
- ASP.NET Core 缓存技术 及 Nginx 缓存配置
前言 在Asp.Net Core Nginx部署一文中,主要是讲述的如何利用Nginx来实现应用程序的部署,使用Nginx来部署主要有两大好处,第一是利用Nginx的负载均衡功能,第二是使用Nginx ...
- ASP.NET缓存 Cache之数据缓存
添加 Cache[Key]=object or Cache.Insert 移除 Cache.Remove(key) 1.将值直接写入Cache 代码如下 复制代码 HttpContext.Curre ...
- echarts图形报表缓存问题(option数据缓存)
这几天我在工作中用到了echarts开发报表.每次查询出来的数据都是新的,但是echart展现的图形报表却还是之前的数据.网上找了搜索了很多次也没能解决,后面加了技术群才解决的. 我开始已经确定是报表 ...
- Yii的缓存机制之数据缓存
具体说法就是可以缓存变量信息. 设置:Yii::app()->cache->set(名字, 值, 过期时间): 使用:Yii::app()->cache->get(名字); 删 ...
- PHP中九大缓存技术总结
PHP缓存包括PHP编译缓存和PHP数据缓存两种.PHP是一种解释型语言,属于边编译边运行的那种.这种运行模式的优点是程序修改很方便,但是运行效率却很低下.PHP编译缓存针对这种情况做改进处理,使得P ...
- PHP缓存技术的多种方法小结
这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓 ...
- 总结PHP缓存技术的多种方法
这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓 ...
随机推荐
- fgrep---指定的输入文件中的匹配模式的行
fgrep命令是用来搜索 file 参数指定的输入文件(缺省为标准输入)中的匹配模式的行.fgrep 命令特别搜索 Pattern 参数,它们是固定的字符串.如果在 File 参数中指定一个以上的文件 ...
- SpringBoot @PathVariable 和 @requestParam区别
1.若获取的入参的 参数 是下面这种形式 就使用 @requestParam 去获取 参数‘1’ /user?id=1 // url:xxx/user?id=1 @RequestMapping(&qu ...
- 发送邮件被退回,提示: Helo command rejected: Invalid name 错误
我自己配置的 postfix + dovecot server, 配置了outlook 后, 相同的账号. 在有的电脑上能收发成功, 在有的电脑上发送邮件就出现退信.提示 Helo command r ...
- sqoop 1.4.4-cdh5.1.2高速入门
一.高速入门 (一)下载安装 1.下载并解压 wget http://archive.cloudera.com/cdh5/cdh/5/sqoop-1.4.4-cdh5.1.2.tar.gz tar - ...
- vmware虚拟机Windows 2003上网问题
近期须要在Windows 2003 上面做点操作,于是安装虚拟机玩了一下,发现并不能上网,最后的解决的方法是: 卸载IE增强的安全配置 控制面板→加入或删除程序→加入/删除Windows组件" ...
- 虚拟机中试用windows 8(视频)
虚拟机中试用windows 8(视频) VM7装windows 8基本没戏,建议用正式版vmware8.0,还有Oracle的Virtualbox 也没问题http://www.virtualbox. ...
- Shiro + SSM(框架) + Freemarker(jsp)
Shiro + SSM(框架) + Freemarker(jsp)讲解的权限控制Demo,还不赶快去下载? 我们知道Ajax不能做页面redirect和forward跳转,所以Ajax请求假如没登录, ...
- [BZOJ4555 TJOI2016 HEOI2016 求和]
第一篇博客,请大家多多关照.(鞠躬 BZOJ4555 TJOI2016 HEOI2016 求和 题意: 给定一个正整数\(n\)(\(1\leqq n \leqq100000\)),求: \[ ...
- id---显示用户ID
d命令 id命令可以显示真实有效的用户ID(UID)和组ID(GID).UID 是对一个用户的单一身份标识.组ID(GID)则对应多个UID 语法 id [-gGnru][--help][--ve ...
- Java-Spring-WebService最基础的配置示例
很早很早之前,就初步学习了WebService,感觉还是比较"好"的. 使用Web服务,感觉就像普通API一样,和HTTP接口比较起来. WebService有个很大的局限,就 ...