8.PHP Web开发 缓存-王志良-1.5H.pptxVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
PHP Web开发 -- 缓存盛越 工程技术部 王志良2011年9月内容提要目录1Web缓存概述2客户端缓存CDN3PHP编译缓存4Memcache5NoSQL简介Web缓存概述直接缓存和304缓存CDN缓存Web服务器缓存FastCGI编译缓存业务逻辑缓存MemcaheNoSQL客户端缓存CDN缓存相关的HTTP协议头Expires: Fri, 17 Sep 2021 13:03:46 GMTCache-Control: max-age=315360000 浏览器与CDN均遵守此协议客户端缓存CDN内容过期相关HTTP协议头 Last-Modified: Thu, 18 Aug 2011 09:54:00 GMT Etag: 5a2-4aac49790be00 客户端缓存示例PHP编译缓存PHP编译缓存Opcode CachePHP加速器比较结果总结 1、通过测试得出eAccelerator在请求时间和内存占用综合方面是最好的。 2、通过测试得出使用加速器比无加速器在请求时间快了3倍左右。 3、通过各个官方观察,XCache是更新最快的,这也说明最有发展的。请求时间(秒)单次请求时间(毫秒)最大内存占用(MB)最小内存占用(MB)None10.4196.082424APC30.4532.842121eAccelerator31.2631.992318XCache30.2833.022919PHP本地内存缓存Local Memory CacheMemcacheMemcache: Free open source, high-performance, distributed memory object caching system.MemcachePage : Memcached的内 存分配以page为单 位,默认情况下一 个page是1M,可 以通过-I参数在启 动时指定。如果需 要申请内存时, memcached会划 分出一个新的page并分配给需要的slab区域。page一旦被分配在重启前不会被回收或者重新分配(page ressign已经从1.2.8版移除了).MemcacheSlabs : Memcached并不是将所有大小的数据都放在一起的,而是预先将数据空间划分为一系列slabs,每个slab只负责一定范围内的数据存储。每个slab只存储大于其上一个slab的size并小于或者等于自己最大size的数据。memcached默认情况下下一个slab的最大值为前一个的1.25倍,这个可以通过修改-f参数来修改增长比例。MemcacheChunk : Chunk是一系列固 定的内存空间,这个大小 就是管理它的slab的最大 存放大小。chunk是 memcached实际存放缓存 数据的地方,因为chunk的大小固定为slab能够存放的最大值,所以所有分配给当前slab的数据都可以被chunk存下。如果时间的数据大小小于chunk的大小,空余的空间将会被闲置,这个是为了防止内存碎片而设计的。例如下图,chunk size是224byte,而存储的数据只有200byte,剩下的24byte将被闲置。 MemcacheSlab的内存分配: Memcached在启动时通过-m指定最大使用内存,但是这个不会一启动就占用,是随着需要逐步分配给各slab的。 如果一个新的缓存数据要被存放,memcached首先选择一个合适的slab,然后查看该slab是否还有空闲的chunk,如果有则直接存放进去;如果没有则要进行申请。slab申请内存时以page为单位,所以在放入第一个数据,无论大小为多少,都会有1M大小的page被分配给该slab。申请到page后,slab会将这个page的内存按chunk的大小进行切分,这样就变成了一个chunk的数组,在从这个chunk数组中选择一个用于存储数据。MemcacheMemcached内存分配策略 综合上面的介绍,memcached的内存分配策略就是:按slab需求分配page,各slab按需使用chunk存储。这里有几个特点要注意 Memcached分配出去的page不会被回收或者重新分配Memcached申请的内存不会被释放 空闲的chunk不会借给任何其他slab使用MemcacheMemcache 分布式:MemcacheMemcache 分布式 – hash strategy :PHP Memcache客户端默认提供两种hash策略:standard consistent(一致性哈希)hash(key) / num(server)MemcacheMemcache 压缩存储:在这个方法中,将$flag设置为MEMCACHE_COMPRESSED即可启用memcache

文档评论(0)

wxc6688 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档