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如何实现文件缓存技术(静态数据缓存)的更多相关文章

  1. 我用ASP.NET缓存之SQL数据缓存依赖(SqlCacheDependency)

    [名词解释] 缓存(Cache)依赖,大白话解释就是缓存是否更新依赖于其它Object.那么SqlCacheDependency指的就是Cache的数据更新依赖于SQL Server数据库表的变化(  ...

  2. web开发人员须知的web缓存知识–将数据缓存到浏览器端Net实现

    现实中,服务器在向浏览器发送的数据中,一部分数据是不经常更新的,如果能将这部分数据缓存到浏览器端,将会大大降低传输的数据,提高应用的性能.通过Expires策略,可以使用HTTP 协议定义的缓存机制将 ...

  3. ASP.NET Core 缓存技术 及 Nginx 缓存配置

    前言 在Asp.Net Core Nginx部署一文中,主要是讲述的如何利用Nginx来实现应用程序的部署,使用Nginx来部署主要有两大好处,第一是利用Nginx的负载均衡功能,第二是使用Nginx ...

  4. ASP.NET缓存 Cache之数据缓存

    添加 Cache[Key]=object  or Cache.Insert 移除 Cache.Remove(key) 1.将值直接写入Cache 代码如下 复制代码 HttpContext.Curre ...

  5. echarts图形报表缓存问题(option数据缓存)

    这几天我在工作中用到了echarts开发报表.每次查询出来的数据都是新的,但是echart展现的图形报表却还是之前的数据.网上找了搜索了很多次也没能解决,后面加了技术群才解决的. 我开始已经确定是报表 ...

  6. Yii的缓存机制之数据缓存

    具体说法就是可以缓存变量信息. 设置:Yii::app()->cache->set(名字, 值, 过期时间): 使用:Yii::app()->cache->get(名字); 删 ...

  7. PHP中九大缓存技术总结

    PHP缓存包括PHP编译缓存和PHP数据缓存两种.PHP是一种解释型语言,属于边编译边运行的那种.这种运行模式的优点是程序修改很方便,但是运行效率却很低下.PHP编译缓存针对这种情况做改进处理,使得P ...

  8. PHP缓存技术的多种方法小结

    这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓 ...

  9. 总结PHP缓存技术的多种方法

    这里所说的数据缓存是指数据库查询PHP缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓 ...

随机推荐

  1. 03012_预处理对象executeQuery方法(实现数据库的查询)

    1.概述 (1)通过预处理对象的executeQuery方法,完成记录的select语句的执行: (2)操作格式统一如下: ①注册驱动: ②获取连接: ③获取预处理对象: ④SQL语句占位符设置实际参 ...

  2. Mysql学习总结(19)——Mysql无法创建外键的原因

    在MySQL中创建外键时,经常会遇到问题而失败,这是因为Mysql中还有很多细节需要我们去留意,我自己总结并查阅资料后列出了以下几种常见原因. 1.  两个字段的类型或者大小不严格匹配.例如,如果一个 ...

  3. SYSU 6356 Dispatching

    Dispatching Time Limit: 3000ms Memory Limit: 262144KB This problem will be judged on SYSU. Original ...

  4. CSUOJ 1525 Algebraic Teamwork

    Problem A Algebraic Teamwork The great pioneers of group theory and linear algebra want to cooperate ...

  5. PatentTips - Device virtualization and assignment of interconnect devices

    BACKGROUND Standard computer interconnects, particularly for personal computers or workstations, may ...

  6. 洛谷 P1889 士兵站队

    P1889 士兵站队 题目描述 在一个划分成网格的操场上, n个士兵散乱地站在网格点上.由整数 坐标 (x,y) 表示.士兵们可以沿网格边上.下左右移动一步,但在同时刻任一网格点上只能有名士兵.按照军 ...

  7. TXT小说朗读正式版

    作者:www.gudianxiaoshuo.com 干净清洁的小说朗读软件,支持 TXT阅读.语音朗诵.点评标注.数据挖掘

  8. final使用方法

     final的作用随着所修饰的类型而不同 1.final修饰类中的属性或者变量 不管属性是基本类型还是引用类型.final所起的作用都是变量里面存放的"值"不能变. 这个值,对 ...

  9. jQuery11 data() : 数据缓存

    <!DOCTYPE HTML> <html> <head> <meta http-equiv="Content-Type" content ...

  10. Linux下截图技巧

           在需要Linux显示图片的场合,最普通的方法,会考虑用数码相,或是用Vmware,或VPc来抓拍,这样以来会比较麻烦,Linux也自带了些工具例如Gimp,ksnapshot这里我介绍一 ...