摘要:认识缓存缓存原意是指可以进行高速数据交换的存储器。命中率指请求缓存次数与缓存返回正确结果次数的比例。如果相同,缓存直接使用副本相应访问,而不用向服务器发送请求缓存内容应用情形有完整的过期时间和寿命控制头,并且没过期。
1. 认识缓存
缓存:
原意是指可以进行高速数据交换的存储器。当cpu处理数据时,先到cache中寻找,如果数据已经读取,就不需要去RAM中读取了
在web开发中,缓存主要应用在以下几个方面,PHP为例:
底层有cpu缓存,磁盘文件系统缓存
应用层有zend虚拟机变量缓存,有memcached这样的key-value内存缓存
数据库层有Table cache, thread cache, query cache
servlet容器层有Apache的缓存
浏览器缓存
这些缓存都是存放在内存或者硬盘中。一般的情况是需要速度的话存在内存中,需要持久性和数据量比较大时用硬盘缓存。
命中率:
指请求缓存次数与缓存返回正确结果次数的比例。
缓存最大数据量:
能处理的元素最大个数或能使用的最大存储空间
缓存更新策略(缓存内存满后,就会剔除老的缓存)
FIFO (first in first out)最先进入缓存的数据最先被清理出去
LFU (less frequently used) 最少是用的元素会被清理掉。需要换存有hit属性
LRU (least recently used) 最近最少使用的元素被清理。需要有时间戳。
2. 缓存实例一个php程序运行完后,内存马上释放,基本所有数据都被销毁,此时内存不存在php代码中的数据,这和常住内存的java等语言有显著区别。
优点: 有效避免内存泄露,内存回收机制简单。避免因为一个程序而连累整个服务器。
缺点: 无法服用已有数据,每个请求都重复执行 请求--翻译--执行 过程
opcode(operation code)缓存就是虚拟机吧php代码编译成一种中间码的结果缓存起来(硬盘或内存)。下一次运行到此页面,直接解释这些代码就行了。省去Flex语法其进行语法编译和大部分语法检查
Mysql实例: Querycache 缓存客户端提交给mysql的select语句的结果集。 就是把select语句和结果做hash映射后保存在一定的内存区域内
由浏览器来实现的,将浏览器在硬盘中存储已经看过的网页副本。
如果URL相同,缓存直接使用副本相应访问,而不用向服务器发送请求
缓存内容应用情形:
有完整的过期时间和寿命控制头,并且没过期。 就是在expires和cache-control中的max-age值
浏览器已经使用过缓存副本,并且在一个会话中检查过过期时间。例如后退,前进
如果缓存太旧了,会向服务器发送校验请求。如果资源不变,则返回304,内容为空
内容整理自 《php核心技术与最佳实践》
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/8984.html
摘要:缓存详解标签空格分隔缓存缓存之于性能优化请求更快通过将内容缓存在本地浏览器或距离最近的缓存服务器如,在不影响网站交互的前提下可以大大加快网站加载速度。强制缓存不发请求到服务器,协商缓存会发请求到服务器。参考浏览器协议缓存机制详解 Web缓存详解 标签(空格分隔): 缓存 缓存之于性能优化 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影响网站交互的前提...
摘要:缓存详解标签空格分隔缓存缓存之于性能优化请求更快通过将内容缓存在本地浏览器或距离最近的缓存服务器如,在不影响网站交互的前提下可以大大加快网站加载速度。强制缓存不发请求到服务器,协商缓存会发请求到服务器。参考浏览器协议缓存机制详解 Web缓存详解 标签(空格分隔): 缓存 缓存之于性能优化 请求更快:通过将内容缓存在本地浏览器或距离最近的缓存服务器(如CDN),在不影响网站交互的前提...
阅读 3306·2021-11-19 11:36
阅读 2903·2021-09-27 13:34
阅读 1975·2021-09-22 15:17
阅读 2375·2019-08-30 13:49
阅读 662·2019-08-26 13:58
阅读 1298·2019-08-26 10:47
阅读 2462·2019-08-23 18:05
阅读 585·2019-08-23 14:25