PHP 缓存详解

为什么要使用缓存

一个网站或者一个应用的标准流程是浏览器向应用服务器发出请求,应用服务器做一些计算和逻辑判断之后再请求数据库,数据库收到请求后在经过计算将数据返回给应用服务器,应用服务器再次计算后把数据返回给浏览器

那么,随着web业务的复杂度和并发量的增加,应用服务器所做的计算和逻辑处理越来越多,而应用服务器的资源是有限的,且数据库每秒接受并处理请求的次数也是有限的。为了在有限的资源提供尽可能多的吞吐量,就是减少计算量,缩短请求流程(减少网络I/O或硬盘I/O)。这时,就用到了缓存(Cache)

缓存三大要素

1. 命中率

百度百科:终端用户访问加速节点时,如果该节点有缓存住了要被访问的数据时就叫做命中,如果没有的话需要回原服务器取,就是没有命中。取数据的过程与用户访问是同步进行的,所以即使是重新取的新数据,用户也不会感觉到有延时。 命中率=命中数/(命中数+没有命中数), 缓存命中率是判断加速效果好坏的重要因素之一

2. 更新缓存策略

一般更新�缓存厕策略有三种:

FIFO,最先被缓存的数据,在缓存空间不足的情况下会被先清除

LFU,最少使用的元素会被清除,在缓存空间不足的情况下会先清除最少使用的数据,即hit值最好的元素

LRU,最近最少使用的元素会被清除,当缓存空间不足时,最近最少使用的元素将被清除

3. 缓存最大数据量

换存方式

1. 文件缓存

文件缓存就是把缓存数据存储到文件系统即硬盘中。文件缓存优点

磁盘容量大,价格低

磁盘比内容更稳定可靠,断电后不会丢失数据,存储也比较简单

固态硬盘的读写速度也比较快

容易扩展

文件缓存的开源产品Secache,用PHP实现的key-value数据库,安装键值对的方式存储到文件

下载地址:https://code.google.com/archive/p/secache/downloads

特点:

PHP实现,无需任何扩展

使用LRU算法自动清除过期内容

最大支持1GB缓存文件

使用hash定位,读取快

使用方法,示例代码testSecache.php

目录结构:

运行结果

2. 客户端缓存

客户端缓存或Web缓存根据请求保存输出内容的副本,例如HTML页面,图片,文件等。当下一次相同的请求过来时,不需要再向服务器发送请求,而是直接使用这些副本。这些副本是浏览器实现的,将服务器返回的这些资源保存在本地硬盘上。

客户端换出示例代码

访问index.php页面

点击aaa超级连接,显示测试数据。

在当前页面点击浏览器的返回按钮到,在点击aaa超链接。不会再向服务器发送请求,而是直接调用存储在本地的缓存页。即使改变webcache.php中的echo 内容。浏览器也不会重新读取服务器上的资源。

只有当缓存到期,缓存被清除或是强制刷新页面,才会获取最新服务器数据

原文地址:https://www.jianshu.com/p/7665175d0ddd
原文地址:https://www.cnblogs.com/lovellll/p/10409507.html