Bài 5: V n
v Cache trong
Yii framework
Bài 5: Caching trong Yii framework
M c tiêu bài h c
T ng quan v Caching trong Yii framework
Caching d li u
Caching o n d li u
Caching trang d li u
N i dung ng
Bài 5: Caching trong Yii framework
2
T ng quan v Caching
Yii framework
Bài 5: Caching trong Yii framework
3
Caching là gì?
B nh
m (caching) là m t cách ti t ki m chi phí và
r t hi u qu trong vi c c i thi n hi u su t c a m t ng
d ng Web.
B ng cách l u tr d li u t ng
i t nh trong b nh
cache và ph c h i nó t b nh cache khi có yêu c u,
chúng ta ti t ki m th i gian c n thi t
t o ra d li u
m i.
S d ng b nh cache trong Yii ch y u liên quan n
c u hình và truy c p vào m t thành ph n ng d ng
trong b nh cache
Bài 5: Caching trong Yii framework
4
Caching là gì?
s d ng b nh
m, ta dùng: Yii::app()->cache.
Bài 5: Caching trong Yii framework
5
Caching là gì?
s d ng b nh
m, ta dùng: Yii::app()->cache.
Yii cung c p các lo i b nh
m sau:
CMemCache: s d ng PHP memcache m r ng .
CApcCache: s d ng PHP APC m r ng.
CXCache: s d ng PHP XCache m r ng.
CEAcceleratorCache: s d ng PHP eAccelerator m r ng.
CDummyCache: gi i thi u cache gi mà không có b nh
m. M c ích là
n gi n hóa các mã mà c n ki m tra s
s n có c a b nh cache.
•Ví d , trong quá trình phát tri n, n u máy ch không có h
tr b nh cache th c t , chúng ta có th s d ng thành
ph n b nh cache này
Bài 5: Caching trong Yii framework
6
Caching d li u
Yii framework
Bài 5: Caching trong Yii framework
7
Caching d li u là gì?
B nh
m d li u nh m l u tr m t s bi n PHP trong b
nh cache và l y nó b nh cache khi c n thi t.
V i m c ích này, l p CCache cung c p 2 ph ng th c là
get() và set()
l u tr bi n $value trong Cache, chúng ta s d ng id duy
nh t nh sau:
l u d li u trong Cache trong m t th i gian nh t
dùng:
nh, ta
Bài 5: Caching trong Yii framework
8
Caching d li u là gì?
C ng có th get, set các cách t ng
Câu l nh thi t l p d li u trong cache:
$cache ->set('var1',$value1);
Câu l nh
ng nh sau:
VS
c d li u t cache:
$value2=$cache->get('var2');
VS
•Trong ó: var1, var2 óng vai trò là ID
Bài 5: Caching trong Yii framework
9
B nh
m ph thu c?
Bên c nh vi c thi t l p ngày h t h n, l u tr d li u c ng có
th vô hi u hóa b ng cách s d ng m t s thay
i ph
thu c.
Ví d , chúng ta có b nh
m ch a n i dung c a m t s
t p tin và các t p tin thay
i, chúng ta nên vô hi u hóa các
b n sao l u tr và
c n i dung m i nh t t t p tin thay vì
c b nh cache.
Ta s dung các th hi n c a l p CCacheDependency
s
d ng vào vi c này
Bài 5: Caching trong Yii framework
10
B nh
m ph thu c?
Ví d : D li u s b vô hi u hóa trong 30s, và nó có th b
vô hi u hóa tr c ó n u các t p tin ph thu c b thay i
D i ây là m t s d ng b nh
m ph thu c:
•CFileCacheDependency: s ph thu c
c thay i n u
th i gian s a i cu i cùng c a t p tin
c thay i.
•CDirectoryCacheDependency: s ph thu c
c thay
i n u các t p tin trong th m c và th m c con c a nó
c thay i.
Bài 5: Caching trong Yii framework
11
B nh
m ph thu c?
D i ây là m t s d ng b nh
m ph thu c:
•CDbCacheDependency: s ph thu c
c thay
i n u
truy v n k t qu c a câu l nh SQL
c thay i.
•CGlobalStateCacheDependency: s ph thu c
c thay
i n u giá tr c a bi n toàn c c thay
i. M t bi n toàn
c c là m t bi n liên t c
c yêu c u nhi u phiên trong
ng d ng. Nó
c nh ngh a thông qua CApplication ::
setGlobalState ().
•CChainedCacheDependency: s ph thu c
c thay
i
n u nó ph thu c vào chu i
c thay i.
•CExpressionDependency: s ph thu c
c thay i n u
k t qu c a bi u th c PHP
c thay i.
Bài 5: Caching trong Yii framework
12
Truy v n trong b nh
m?
Ta s d ng ph ng th c sau
thành ph n ng d ng trong b nh
• CDbConnection::queryCacheID
S d ng b nh
m v i DAO:
S d ng b nh
tham chi u
m
n ID c a
m v i Active Record
Bài 5: Caching trong Yii framework
13
B nh
Ví d
m a truy v n?
o n ch
ng trình sau:
Ta th y r ng, m c nh db->cache(1000, $dependency,1)
t c là s d ng cache cho câu l nh createComand.
Nh ng nh ng câu l nh sau ó s không s d ng cache
n u không ch rõ.
Bài 5: Caching trong Yii framework
14
B nh
m a truy v n?
Ví d o n ch
d ng cache:
ng trình sau ch rõ 2 câu truy v n
us
Bài 5: Caching trong Yii framework
15
B nh
m
o n d li u
Yii framework
Bài 5: Caching trong Yii framework
16
B nh
m o n d li u?
B nh
m o n d li u
c p n m t ph n d li u c a
trang
c l u trong b nh
m.
Ví d , n u m t trang hi n th m t b n tóm t t quá trình bán
hàng c n m trong m t b ng, chúng ta có th l u tr b ng
này trong b nh cache
lo i b th i gian c n thi t t o ra
nó cho m i yêu c u.
s d ng b nh
m o n d li u, ta dùng:
• CController::beginCache() và CController::endCache()
Bài 5: Caching trong Yii framework
17
B nh
m o n d li u?
Ví d
o n trên, n u n u beginCache() tr v false, n i dung l u
tr s
ct
ng chèn vào cache.
Ng c l i n i dung bên trong s
c th c hi n và
c
l u tr khi endCache ()
c g i.
Bài 5: Caching trong Yii framework
18
Các l a ch n b nh
m?
V th i gian:
Xét ví d sau:
Ta th y r ng o n mã trên s l u tr n i dung vào cache
trong ít nh t 1 gi .
N u chúng ta không thi t l p th i gian, nó s m c nh
là 60 giây, có ngh a là n i dung
c l u tr s h t hi u
l c sau 60 giây.
Bài 5: Caching trong Yii framework
19
Các l a ch n b nh
m?
V s ph thu c:
Ví d : n i dung c a m t bài vi t
vào có hay không có bài
cs a
c hi n th ph thu c
i.
o n mã trên quy nh các n i dung phân m nh ph
thu c vào s thay i giá tr c t lastmodified:
Bài 5: Caching trong Yii framework
20
Các bi n th b nh
m?
tránh g i nh m vùng nh
m, chúng ta nên s d ng
ID khác nhau khi g i beginCache ().
Các lo i bi n th :
•varyByRoute
•varyBySession
•VaryByParam
•varyByExpression
Bài 5: Caching trong Yii framework
21
Các lo i yêu c u?
Khi hi n th Form, chúng ta mu n l u trong cache
sau này
khi g i l i Form chúng có th
c t cache và i n l i v
Form.
Bài 5: Caching trong Yii framework
22
Cache l ng nhau?
“ o n” b nh
m có th
c l ng vào nhau. ó là,
m t “ o n” l u tr
c bao b c trong m t “ o n” l n
h n c ng
c l u tr .
Ví d , các ý ki n
c l u tr trong m t b nh cache
bên trong “ o n” b nh
m, và chúng c ng
c l u
tr cùng v i n i dung bài trong m t b nh
m bên
ngoài.
Bài 5: Caching trong Yii framework
23
B nh
m Trang d li u
Yii framework
Bài 5: Caching trong Yii framework
24
B nh
m Trang d li u?
Trang b nh
m
c p nb
toàn b trang.
Trang b nh
m có th x y ra t
Ví d , b ng cách ch n m t tiêu
duy t c a ng i dùng có th nh
trong m t th i gian h n ch . Các
th l u tr n i dung trang trong b
nh
m n i dung c a
i các v trí khác nhau.
trang thích h p, trình
cache trang
c xem
ng d ng web c ng có
nh cache.
Bài 5: Caching trong Yii framework
25