码迷,mamicode.com
首页 > Web开发 > 详细

PHP缓存

时间:2015-09-01 10:35:34      阅读:183      评论:0      收藏:0      [点我收藏+]

标签:

一:缓存的概念

1 缓存是什么

缓存是指能够进行高速数据交换的存储器

2 缓存的工作原理

当我们读取数据时,首先会从缓存中获取,如果找到立即返回,如果没有缓存对应数据就会从数据源读取;取回的同时会把相应的数据进行缓存,以便下次访问同一数据源时使用可以从缓存中直接取回。

3 为什么要使用缓存

  • 读取速度快,提高用户体验
  • 降低了服务器压力,提高了性能
  • 提升了并发能力

4 缓存的特性

  • 数据的零时性
  • 时间的有效性

二:一个PHP的HTTP请求执行过程

  • 浏览器 (xxx.com/a.php)->服务器(Apache/Nginx)->php_mod/php-fcdi->执行(a.php)得到内容->返还给(Apache/Nginx)->返还给浏览器解析后用户看到
  • 常规php请求执行过程
  • 技术分享
  • 优化后的执行过程
  • 技术分享

三:缓存的类型

  1. 前端缓存(var,cookie,local storage)

    

//优化前
document.getElementById("h_890").value = "890";
var form = document.getElementById("h_890").form;
//局部变量优化后
var h_890 = document.getElementById("h_890");
h_890.value="890";
var form = h_890.form;
//利用global缓存=>窗口进程内(不刷新)
global userList = null;
function getUserList(){
     if(userList != null){
       //处理数据
     }else{
       //请求数据资源
       //global 全局变量
       //处理相应的数据
     }      
} 
   
//利用cookie缓存=>会话期内(不关闭浏览器)
function getUserList(){
     var c_name = "h_890",c_val = getCookie(c_name);
     if(c_val != ‘‘){
       //处理数据
     }else{
       //请求数据资源,返回data
       setCookie(c_name,data);
       //处理相应的数据
     }      
}     
//利用local storage缓存=>最长时间(浏览器关闭仍有效)
function getUserList(){
     var key = "h_890",val = window.localStorage.getItem(key);
     if(val != ‘‘){
       //处理数据
     }else{
       //请求数据资源,返回data
       window.localStorage.setItem(key ,data);
       //处理相应的数据
     }      
} 

  2.php静态变量

  

//最常见的数据库资源
function connect(){
    return mysql_connect(‘localhost‘,‘root‘,‘root‘);  
}
//改良
class Db {

    private static $db = null;

    function connect() {
        if (null === self::$db) {
             self::$db = mysql_connect(‘localhost‘,‘root‘,‘root‘);
        }
        return self::$db;
    }
}
//静态变量升华->单例模式
class Db {

    static private $_instance = array(); //类实例
    private $_db;
    private $_db_name = "localhost";
    private $_db_host = "root";
    private $_db_pwd = "root";

    static function getInstance() {
        (NULL === self::$_instance) && self::$_instance = new self();
        return self::$_instance;
    }

    private function __clone() {
        
    }

    private function __construct() {
        $this->_db = mysql_connect($this->_db_host, $this->_db_name, $this->_db_pwd);
    }

}
$db = Db::getInstance();

  3. php扩展缓存简介

  • APC PHP PECL 中的一个扩展,小巧,php集成,无需单独安装,且经常有维护哦
  • Xcache Lighttpd项目的一部分,国人V5,性能不错,对新版本的php支持不错
  • eAccelerator 官方加速器,综合性能最好,支持磁盘存储

PHP缓存

标签:

原文地址:http://www.cnblogs.com/ID890/p/cache.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!