三种缓存原理

一  .Opcode缓存

Opcode是operation code(操作码)的简称,一种中间码。PHP代码执行会经过如下4个步骤:

  • 首先,Zend Engine(Zend引擎),调用词法分析器(Lex生成的,源文件在 Zend/zend_language_sanner.l), 将我们要执行的PHP源文件,去掉空格 ,注释,分割成一个一个的token。
  • 然后,Zend引擎会将得到的token forward给语法分析器(yacc生成, 源文件在 Zend/zend_language_parser.y),生成一个一个的op code,opcode一般会以op array的形式存在,它是PHP执行的中间语言。
  • 最后,Zend引擎调用zend_executor来执行op array,输出结果。

缓存Opcodes ,这样,有多个用户有请求来临的时候,就不需要重复执行前面3步,从而能大幅的提高PHP的执行速度。

二 .Web服务器缓存

1.Apache缓存
    
Apache的缓存实现主要依靠 mod_cache、mod_disk_cache、mod_file_cache 及mod_mem_cache。
   只需在配置编译的时候加上参数:
   –enable-cache、–enable-disk-cache、–enable- file-cache、 –enable-mem-cache
即可。

Apache 缓存方式
   Apache 的缓存方式有两种,一种是基于硬盘文件的缓存,由 mod_disk_cache 实现,另一种是使用内存缓存,由mod_mem_cache 实现。
  不过它们都是依赖 mod_cache 模块的,mod_cache 模块提供了一些缓存配置的指令供它们使用.

2.Nginx缓存
假设有两台物理机,他们分属于不同的域名,以webgame的游戏运营商和开发商为例,运营商需要获取游戏中的排行数据,开发商为了过多对游戏服务器的请求,会在发起请求的机器上设置缓存(或是让运营商定时过来抓取一次数据)

nginx设置web缓存,需要用到的相关指令:

1、proxy_cache

2、proxy_cache_path

3、proxy_cache_valid

1.Apache缓存
    
Apache的缓存实现主要依靠 mod_cache、mod_disk_cache、mod_file_cache 及mod_mem_cache。
   只需在配置编译的时候加上参数:
   –enable-cache、–enable-disk-cache、–enable- file-cache、 –enable-mem-cache
即可。

Apache 缓存方式
   Apache 的缓存方式有两种,一种是基于硬盘文件的缓存,由 mod_disk_cache 实现,另一种是使用内存缓存,由mod_mem_cache 实现。
  不过它们都是依赖 mod_cache 模块的,mod_cache 模块提供了一些缓存配置的指令供它们使用.

2.Nginx缓存
假设有两台物理机,他们分属于不同的域名,以webgame的游戏运营商和开发商为例,运营商需要获取游戏中的排行数据,开发商为了过多对游戏服务器的请求,会在发起请求的机器上设置缓存(或是让运营商定时过来抓取一次数据)

nginx设置web缓存,需要用到的相关指令:

1、proxy_cache

2、proxy_cache_path

3、proxy_cache_valid

三 .客户端缓存

 B/S模式下,浏览器对网页信息的缓存策略是应用的比较广泛和成功的,在激活缓存策略的前提下,浏览器访问图片资源时,首先验证图片资源是否在本地存在副本,如果存在,则在访问请求 Header 中使用 If-Modified-Since ETag 参数: 如果服务检测到图片文件被变更,则发送整个图片资源;若未发生变更,则服务端响应304(Not Modified) 状态, 而不发送整个图片资源,从而减少网络传输流量,提高响应速度。

 

例如网页浏览器启用缓存策略后,访问静态图片文件时客户端与服务端交互过程如下:三种缓存原理_第1张图片

三种缓存原理_第2张图片


你可能感兴趣的:(PHP)