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缓存机制,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓 ...
 
随机推荐
- win10 WmiPrvSE.exe WMI Provider 占用CPU过高的问题
			
重启 Windows Management Instrumentation 服务 重启 WMI service. + ,输入: "services.msc" ,按 . 在 服务 ...
 - ThinkPHP数据分页Page.class.php
			
获取分页类 ThinkPHP提供了数据分页的扩展类库Page,能够在http://www.thinkphp.cn/extend/241.html下载,或者下载官方的完整扩展包(http://www.t ...
 - HDU 5281 Senior's Gun 杀怪
			
题意:给出n把枪和m个怪.每把枪有一个攻击力,每一个怪有一个防御力.假设某把枪的攻击力不小于某个怪的防御力则能将怪秒杀,否则无法杀死.一把枪最多仅仅能杀一个怪,不能用多把枪杀同一个怪.每杀一次怪能够得 ...
 - C语言之基本算法39—字符串经典操作
			
//字符串概念! /* ================================================================== 题目:练习字符串的 1.输入输出 ...
 - HBase 数据库检索性能优化策略
			
HBase 数据表介绍 HBase 数据库是一个基于分布式的.面向列的.主要用于非结构化数据存储用途的开源数据库.其设计思路来源于 Google 的非开源数据库"BigTable" ...
 - 2.Maven之(二)Maven生命周期
			
转自:https://blog.csdn.net/u012152619/article/details/51473404 我们在开发项目的时候,不断地在编译.测试.打包.部署等过程,maven的生命周 ...
 - 12、UVC&V4L2的关系
			
UVC是一种usb视频设备驱动.用来支持usb视频设备,凡是usb接口的摄像头都能够支持 V4L2是Linux下的视频采集框架.用来统一接口,向应用层提供API UVC: USB video clas ...
 - Mysql学习总结(18)——Mysql主从架构的复制原理及配置详解
			
一.复制概述 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的数据复制到其它主机(slaves)上,并重 ...
 - [AngularFire] Firebase OAuth Login With Custom Firestore User Data
			
import { NgModule } from '@angular/core'; import { AuthService } from './auth.service'; import { Ang ...
 - HDU 1007 Quoit Design 平面内最近点对
			
http://acm.hdu.edu.cn/showproblem.php?pid=1007 上半年在人人上看到过这个题,当时就知道用分治但是没有仔细想... 今年多校又出了这个...于是学习了一下平 ...