亚洲视频二区_亚洲欧洲日本天天堂在线观看_日韩一区二区在线观看_中文字幕不卡一区

公告:魔扣目錄網(wǎng)為廣大站長(zhǎng)提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請(qǐng)做好本站友鏈:【 網(wǎng)站目錄:http://www.430618.com 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢(xún)客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會(huì)員:747

作為PHP的開(kāi)源框架,自然少不了對(duì)緩存的支持。Yii緩存可以在不同的級(jí)別使用。在最低級(jí)別,可用來(lái)緩存單個(gè)數(shù)據(jù)(數(shù)據(jù)緩存)。往上一級(jí),我們緩存一個(gè)由視圖腳本生成的頁(yè)面片斷(片段緩存)。在最高級(jí)別,可存儲(chǔ)整個(gè)頁(yè)面以便需要的時(shí)候直接從緩存讀取。本文說(shuō)明頁(yè)面緩存的配置及實(shí)現(xiàn)效果;

實(shí)現(xiàn)分為2步;

1. 在config文件加入緩存組件.

    'cache' => array (

        'class' => 'system.caching.CFileCache',

         'directoryLevel' => 2,

    ),

class標(biāo)識(shí)需要使用的緩存媒介,用途比較廣的類(lèi)型基本都有支持:

CMemCache: 使用 PHP memcache 擴(kuò)展.

CApcCache: 使用 PHP APC 擴(kuò)展.

CDbCache: 使用一張數(shù)據(jù)庫(kù)表來(lái)存儲(chǔ)緩存數(shù)據(jù)。

CFileCache: 使用文件來(lái)存儲(chǔ)緩存數(shù)據(jù)。 特別適用于大塊數(shù)據(jù)(例如頁(yè)面)。

當(dāng)然,yii也可以支持Redis,需要裝一個(gè)插件:

http://www.yiibase.com/download/view/32.html

本文實(shí)例使用的是文件緩存,對(duì)于文件緩存,緩存到的位置為protected/runtime/;directoryLevel設(shè)置緩存文件的目錄深度;如果緩存頁(yè)面特別多,這個(gè)值需要設(shè)置大點(diǎn),否則每個(gè)目錄下的頁(yè)面會(huì)很多;

2. 在要做緩存的控制器里定義過(guò)濾器。

   public function filters() {

            return array (

                array (

                    'COutputCache + post, list',

                    'duration' => 3600,

                    'varyByParam' => array('id','page'),

    'dependency' => array(

                    'class'=>'CDbCacheDependency',

                    'sql'=>'SELECT MAX(id) FROM me115_book',

                )

            );

        }

COutputCache 是用于處理緩存的類(lèi),如果只填'COutputCache',則控制器里所有action都會(huì)通過(guò)緩存過(guò)濾,定義'COutputCache + post, list',表示只對(duì)以下方法進(jìn)行緩存:actionPost, actionList

duration 是緩存的時(shí)間,單位是秒,

varyByParam 是指定一系列GET參數(shù)名稱(chēng)列表, 使用相應(yīng)的值去確定緩存內(nèi)容的版本,即同一個(gè)action用于區(qū)分是不同頁(yè)面的的參數(shù),此處我以id和page來(lái)區(qū)分不同頁(yè)面。

    除varyByParam以外,還可以采用其他的條件來(lái)區(qū)分頁(yè)面:

    varyByExpression:指定緩存內(nèi)容通過(guò)自定義的PHP表達(dá)式的結(jié)果而變化

    varyByRoute:指定緩存內(nèi)容基于請(qǐng)求的路由不同而變化 (controller 和 action)

    varyBySession:指定是否緩存內(nèi)容. 因用戶(hù)session不同而變化

dependency'指定緩存失效依賴(lài)關(guān)系:可指定文件或數(shù)據(jù)庫(kù);本文采用的是數(shù)據(jù)庫(kù)依賴(lài)CDbCacheDependency;

   本例指定的是數(shù)據(jù)庫(kù),通過(guò)數(shù)據(jù)表的某個(gè)值的變化來(lái)確定緩存是否失效。例如,如果在表中新增了一條me115_book記錄,即使緩存才過(guò)了2分鐘(<3600),仍然判斷為失效,從而查詢(xún)數(shù)據(jù)庫(kù),生成整個(gè)頁(yè)面,再次緩存;

檢查:

查看當(dāng)前頁(yè)面是否緩存,可以dump輸出一個(gè)當(dāng)前服務(wù)器時(shí)間,從而檢查當(dāng)前頁(yè)面是否已緩存;

優(yōu)化效果:

優(yōu)化站點(diǎn)為一個(gè)博客站點(diǎn)(me115.com),除了DNS解析轉(zhuǎn)接外,未進(jìn)行任何優(yōu)化,優(yōu)化前的數(shù)據(jù)為:

首字節(jié)時(shí)間為842ms;

采用頁(yè)面緩存之后的效果:

首字節(jié)時(shí)間為376ms;html生成的時(shí)間大大縮短,后臺(tái)時(shí)間減少了一倍。

當(dāng)然,通過(guò)本圖可以看到整個(gè)站點(diǎn)的用時(shí)還是比較長(zhǎng),主要是在頁(yè)面組件(css/js/圖片)上的下載耗費(fèi)了不少時(shí)間,后續(xù)將針對(duì)這方面進(jìn)行前端優(yōu)化;

分享到:
標(biāo)簽:緩存 開(kāi)源 框架 實(shí)例 配置
用戶(hù)無(wú)頭像

網(wǎng)友整理

注冊(cè)時(shí)間:

網(wǎng)站:5 個(gè)   小程序:0 個(gè)  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會(huì)員

趕快注冊(cè)賬號(hào),推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過(guò)答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫(kù),初中,高中,大學(xué)四六

運(yùn)動(dòng)步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動(dòng)步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績(jī)?cè)u(píng)定2018-06-03

通用課目體育訓(xùn)練成績(jī)?cè)u(píng)定