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. iscsi共享存储的简单配置和应用

    1.环境介绍 SCSI(Small Computer System Interface)是块数据传输协议,在存储行业广泛应用,是存储设备最基本的标准协议.从根本上说,iSCSI协议是一种利用IP网络来 ...

  2. Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-qvc66dfs/supervisor/

    # 安装supervisor 出错 pip3 install supervisor # 解决 sudo pip3 install supervisor

  3. Java Web学习总结(9)——servlet和Jsp生命周期解读

    一.servlet的工作工程 Servlet是运行在Servlet容器(有时候也叫Servlet引擎,是web服务器和应用程序服务器的一部分,用于在发送的请求和响应之上提供网络服务,解码基于MIME的 ...

  4. int long long 的取值范围

    unsigned   int   0-4294967295   //整型的每一种都有无符号(unsigned)和有符号(signed)两种类型(float和double总是带符号的),在默认情况下声明 ...

  5. Http协议简介【转】

    HTTP简介 HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送 ...

  6. C# 使用 X.509 v.3 证书的方法。

    C# 使用 X.509 v.3 证书的方法. public static void Main()    { // The path to the certificate.        string ...

  7. Flask的快速入门详细笔记

    Flask的框架结构对应关系及理解 1.简介 简单介绍下Flask是一个轻量级的web前端框架,不像django那样本身具备一套完整的页面体系,轻量级说明了完全可以自定义,从功能逻辑到业务处理,都可以 ...

  8. Python day3 知识回顾

    names = ["Jonathen","Joesph","Jotaro","Josuke",["Mea&qu ...

  9. Swift具体解释之三----------函数(你想知道的都在这里)

    函数(你想知道的都在这里) 注:本文为作者自己总结.过于基础的就不再赘述 ,都是亲自測试的结果.如有错误或者遗漏的地方.欢迎指正.一起学习. 1. 函数的简单定义和调用 简单的无參函数就不再赘述 , ...

  10. thinkphp多层volist实现多表查询

    thinkphp多层volist实现多表查询 一.总结 二.截图 三.代码 1.控制器 2.视图