有一个php文件存放在D,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获取数据的流程是怎样的?

如果文件中的数据没有过期,就从文件中获取,如果过期了,就从服务器端获取,顺便写一份到文件中。

而判断过期很好做。

758c4aa839950fad18b5d4dae3e09944.png

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、代码

1 <?php2

3 classFiles{4 public $dir;5

6 public $ext='.txt';7

8 public $path;9

10 public function__construct(){11 $this->dir=dirname(__FILE__).'/data/';12 }13

14

15 //缓存数据

16 public function CacheData($data=null,$paths=null,$time=null,$file=null){17 //设置缓存文件

18 $this->path=$this->dir.$paths.$file.$this->ext;19 if (!file_exists(dirname($this->path))) {20 #code...

21 mkdir(dirname($this->path));22 }23

24 if ($data) {25 //设置数据

26 #code...

27 $str=sprintf('%010d',$time).$data.time();28 file_put_contents($this->path, $str);29 }else{30 //判断问文件存在

31 if (!file_exists($this->path)) {32 #code...

33

34 return false;35 }36 //删除缓存

37 if (is_null($data)) {38

39 unlink($this->path);40 return false;41 }42 //定时更新

43 $datas=file_get_contents($this->path);44

45 $cacheTime=substr($datas, 0,10);46 $oldTime=substr($datas, -10);47

48 if ($oldTime+$cacheTime>time()) {49 #code...

50

51 return substr($datas,10,-10);52 }else{53

54 return false;55 }56

57 }58

59 }60 }61

62 //include "Response.php";63 // header('content-type:text/html;charset=utf-8');64

65 // $model=new Files();66 // // 删除缓存67 // $model->CacheData(null,'/user/','','user');68

69

70 // // 读取缓存71 // if ($data=$model->CacheData('','/user/','','user')) {72 // # code...73 // $data=json_decode($data,true);74 // var_dump($data);75

76 // echo "从文件获取的数据";77 // }else{78 // // 设置缓存79 // echo'设置数据';80 // $data=array(81 // array('name'=>'use1','age'=>"10"),82 // array('name'=>'use2','age'=>"10"),83 // array('name'=>'use3','age'=>"10"),84 // array('name'=>'use4','age'=>"10"),85 // array('name'=>'use5','age'=>"10"),86 // );87

88 // var_dump($data);89 // $str=Response::datas('200','成功',$data);90 // $model->CacheData($str,'/user/',20,'user');91 // }

92

93 ?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值