php相關緩存技術

#緩存技術

  • 全頁面靜態化
    全頁面靜態化:頁面全部生成爲html靜態頁面,用戶訪問時直接訪問靜態頁面,而不會去走php服務器解析的流程。
Ob_start();   //php默認開始緩存(可寫可不寫)   打開輸出控制緩衝
Include 'tpl.php';  
$content = Ob_get_contents();  //輸出緩衝區的tpl.php文件
Ob_end_clean();
var_dump($content);

這裏寫圖片描述

  • 頁面部分緩存(靜態頁面局部動態化)
    頁面局部緩存是將一個頁面中不經常變的內容進行靜態緩存,而經常變化的區域不緩存,最後組裝在一起顯示;可以使用類似於ob_get_contents的方式實現,或者ajax技術來實現;

  • 數據緩存 緩存文件
    主要緩存數據信息,例如:商城中的某個商品信息,當用商品id去請求時,就會得出包括店鋪信息、商品信息等數據,此時就可以將這些數據緩存到一個php文件中,文件名包含商品id來建一個唯一標示;下一次查看這個商品時,首先就直接調這個文件裏面的數據信息,而不用再去數據庫查詢(緩存文件中緩存的就是一個php數組之類數據信息);

  • 內存式緩存(Memcache) cache cookie session
    memcache是一種高性能的分佈式內存緩存服務器。 一般的使用目的是,通過緩存數據庫查詢結果,減少數據庫訪問次數,以提高動態Web應用的速度、 提高可擴展性。
    訪問速度:磁盤 <內存 < 閃存
    memcache獲取數據原理:第一次訪問先將需要的數據信息緩存到系統內存中,再次獲取信息時,直接到內存中取;

<?php 
$memcache=new Memcache();
//連接memcache
$link=$memcache->connect('127.0.0.1',11211);
if (!$link) {
exit('連接失敗');
}
$memcache->set('name','ynw',0,3600);
$memcache->set('age',33,MEMCACHE_COMPRESSED,3600);
echo $memcache->get('name'),'<br/>';
$result=$memcache->get(array('name','age'));
var_dump($result);
?>
  • 把數據緩存到Redis數據庫(持久化 )
    redis是一個key-value存儲系統。和Memcached類似,它支持存儲的value類型相對較多,包括string(字符串)、list(鏈表)、set(集合)、zset(sorted set --有序集合)和hash(哈希類型)。這些數據類型都支持push/pop、add/remove及取交集並集和差集及更豐富的操作,而且這些操作都是原子性的。在此基礎上,redis支持各種不同方式的排序。與memcached一樣,爲了保證效率,數據都是緩存在內存中。區別的是redis會週期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件。
<?php
   //Connecting to Redis server on localhost
   $redis = new Redis();
   $redis->connect('127.0.0.1', 6379);
   $redis->set("tutorial-name", "Redis tutorial");
?>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章