Tải bản đầy đủ (.pdf) (11 trang)

Bài 8: Thiết kê và lập trình web với ASP.NET - Quản lý trạng tháng với ASP.NET

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (333.25 KB, 11 trang )

Thitk & Lp trình Web 2
Bài 8
QunQunlýlý TrngTrng tháithái vivi ASP .NETASP .NET
Ths. TrnTh Bích Hnh
Khoa CNTT Khoa CNTT –– H.KHTNH.KHTN
© 2009 Khoa Công ngh thông tin
Thitk & Lp trình Web 2 – Giithiumônhc
NiNi
dungdung
NiNi
dungdung
 Giithiuv Qunlýtrng thái
 Các đitng qunlýtrng thái ca ASP .NET
– Client-based State
– Server-based State
 C ch Cache ca ASP .NET
© 2009 Khoa CNTT - HKHTN
2
Thitk & Lp trình Web 2 – Giithiumônhc
NiNi
dungdung
NiNi
dungdung
 Giithiuv Qunlýtrng thái
 Các đitng qunlýtrng thái ca ASP .NET
– Client-based State
– Server-based State
 C ch Cache ca ASP .NET
© 2009 Khoa CNTT - HKHTN
3
Thitk & Lp trình Web 2 – Giithiumônhc


QunQun
lýlý
TrngTrng
tháithái
QunQun
lýlý
TrngTrng
tháithái
 Mi ng dng web cn chia s thông tin gia các request
 Giao thc HTTP là Stateless
– Mi request gi đnserver đcxemlàmt request mi
– Thông tin ca request trcs không tnti cho request sau
 ASP .NET cung cpcácc ch cho phép qun lý thông
ti
i
á
t
ti
n g
i
ac
á
c reques
t
– Các đitng qunlýtrng thái (State) phía Client và Server
C
h
Ch

C

 c
h
C
ac
h
e
© 2009 Khoa CNTT - HKHTN
4
Thitk & Lp trình Web 2 – Giithiumônhc
NiNi
dungdung
NiNi
dungdung
 Giithiuv Qunlýtrng thái
 Các đitng qunlýtrng thái ca ASP .NET
– Client-based State
– Server-based State
 C ch Cache ca ASP .NET
© 2009 Khoa CNTT - HKHTN
5
Thitk & Lp trình Web 2 – Giithiumônhc
ClientClient

based Statebased State
ClientClient

based

Statebased


State
 Là các đitng trng thái đc lutr máy Client
 Bao gm
– ViewState
– Hidden Fields
– QueryStrings

Cookies
© 2009 Khoa CNTT - HKHTN
6
Thitk & Lp trình Web 2 – Giithiumônhc
ViewStateViewState
ViewStateViewState
 Duy trì thông tin trng thái ca các control trên mt trang
web
gia
các
ln
postback
xy
ra
web

gia
các
ln
postback
xy
ra
 c mã hóa và nhúng trong trang web didng n

<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUJNjI3NjE4OTU5ZGTI7l3xKXYAdsL8nY4w0bddpzSkRQ"
/>
 Không thích hp cho các control cha nhiud liunh
GridView, Repeater…
© 2009 Khoa CNTT - HKHTN
7
Thitk & Lp trình Web 2 – Giithiumônhc
Enable & DisableEnable & Disable
ViewStateViewState
Enable

&

Disable

Enable

&

Disable

ViewStateViewState
 Mc đnh ViewState đckíchhot (enable) cho ttc
các
Server controls
các
Server

controls

 Disable ViewState
PLl

P
age
L
eve
l
Control Level
<%@ Page EnableViewState="false" … %>

Control

Level
<asp:GridView EnableViewState="false" … %>
 Mts Control c bnnh TextBox, DropDownList… luôn
duy
trì
ViewState
cho

ViewState
đã
b
Disable
© 2009 Khoa CNTT - HKHTN
duy
trì
ViewState
cho


ViewState
đã
b
Disable
8
Thitk & Lp trình Web 2 – Giithiumônhc
LpLp
trìnhtrình
QunQun
lýlý
ViewStateViewState
LpLp
trìnhtrình
QunQun
lýlý
ViewStateViewState
 Mc đích: lu thông tin b sung giacácln post-back
trên
cùng
mt
trang
web
trên
cùng
mt
trang
web
 ViewState có th lutr d liuthuc kiuc s hoc
kiu

tham
chiu
(
đi
tng
-
object)
kiu
tham
chiu
(

đi
tng
object)

 Lu ViewState ( name – value )
Vi St t
["
RtCt
"] t
 Truy xut ViewState (phi ép v kiu tng ng)
Vi
ew
St
a
t
e
["
R

eques
tC
oun
t
"]
= coun
t
;
int count = (int)ViewState["RequestCount"];
© 2009 Khoa CNTT - HKHTN
9
Thitk & Lp trình Web 2 – Giithiumônhc
Serialization &Serialization &
DeserializationDeserialization
Serialization

&

Serialization

&

DeserializationDeserialization
 Thông tin trong ViewState đc serialize vào thi đim
runtime
đ
lu
tr

sau

đó
deserialize
đ
khôi
phc
runtime

đ
lu
tr

sau
đó
deserialize
đ
khôi
phc
thành đitng ban đu

Serialization:
Q
ui trình chu
y
n đim

tob
j
ect san
g
m


tdã
y
Q
y

jg

y
bytes đ lutr
– Deserialization: Qui trình khôi phc dãy bytes thành đitng
b
đ
b
an
đ
u
  mt đitng có th serialize và lutrđc trong
ViewState
ta
phi
b
sung
thuc
tính
Serializable
vào
đu
ViewState
,

ta
phi
b
sung

thuc
tính
Serializable
vào
đu
khai báo lp
[Serializable]
© 2009 Khoa CNTT - HKHTN
public class Book { … }
10
Thitk & Lp trình Web 2 – Giithiumônhc
VíVí
dd
VíVí
dd
protected void Page_Load(object sender, EventArgs e)
{
if(Page.IsPostBack==false)
{
Book book = new Book(1, "Harry Potter");
ViewState["myBook"] = book;
}
}
protected void Button1_Click(object sender, EventArgs e)
{

Book book = (Book)
V
iewState["myBook"];
Label1.Text = book.ID + " " + book.BookName;
}
© 2009 Khoa CNTT - HKHTN
11
Thitk & Lp trình Web 2 – Giithiumônhc
HiddenFieldHiddenField
HiddenFieldHiddenField
 Lutr trng thái trong WebForm gia các postback
 Render v phía trình duytvith
<input type=‘hidden’ />
 Có th s dng hidden field đ lutr trng thái cacác
control trong WebForm
ngay c khi ViewState b disable
 Ch thích hp trong viclutr d liuthucv kiuc
s ( int, float, string, … )
© 2009 Khoa CNTT - HKHTN
12
Thitk & Lp trình Web 2 – Giithiumônhc
QueryStringQueryString
QueryStringQueryString
 Là thông tin b sung thêm vào cuichui URL
http://domain/pathfile?name1=value1&name2=value2
 Quer
y
strin
g
đ


c Url encoded
(
các k
ý
t

đ

cbi

tho

c
yg

(
ý




duxuthin trong query string đu đc thay th )
/> Thông tin truyn đib giihn (IE – 2Kb)

Không
thích
hp
truyn
các

thông
tin
bo
mt
Không
thích
hp
truyn
các
thông
tin

bo
mt
 Nhn thông tin truynt Query string
string name =
Request QueryString
[

name
"
]
ToString
();
© 2009 Khoa CNTT - HKHTN
string

name

=


Request
.
QueryString
[
name
]
.
ToString
();
13
Thitk & Lp trình Web 2 – Giithiumônhc
CookiesCookies
CookiesCookies
 Là các thông tin (name – value) đc lu trong mthoc
nhiu
tp
tin
trên
máy
tính
client
nhiu
tp
tin

trên
máy
tính
client

 Các tp tin cookies do Browser qunlý
 Kích thc catp tin cookies có giihn (khong 4Kb)
 Browser s tđng xóa file cookie vào thi đim đcch
đ h
t
th 
tí h
Ei

ki
đ
n
h
t
rong
th
u

c

n
h
E
xp
i
res c

acoo
ki
e

 ng dng lu các thông tin v Client đ tái s dng 
nhng
ln
s
dng
sau
:
nhng
ln
s
dng
sau
:
– Thông tin cá nhân trong hóa đn thanh toán
Thông
tin Username & Password
© 2009 Khoa CNTT - HKHTN

Thông
tin

Username

&

Password
– …
14
Thitk & Lp trình Web 2 – Giithiumônhc
CC

chch
hothot
đngđng
caca
CookieCookie
CC
chch
hothot
đngđng
caca
CookieCookie
 Browser và Server trao đi cookie khi có request đnmt
page
bt
k
trong
cùng
mt
site (domain)
page

bt
k
trong
cùng
mt
site

(domain)
 Browser qunlýkhông cho cookie trong domain này

truyn
đn
domain
khác
truyn
đn
domain

khác
 S lng file cookie trong mt domain có giihn (IE – 20
files
)
)
© 2009 Khoa CNTT - HKHTN
15
Thitk & Lp trình Web 2 – Giithiumônhc
HttpCookieHttpCookie
HttpCookieHttpCookie
 Lp đitng qun lý thông tin Cookie trong ASP.NET

th 
tí h

Htt C ki


c
th
u


c

n
h
c

a
Htt
p
C
oo
ki
e
– Name : tên ca Cookie

Value :
Giá
tr
ca
Cookie
Value

:

Giá
tr
ca
Cookie
– Domain : domain cookie này thucv.
– Expires : xác đnh thigiancóhiulcca Cookie

– HasKeys : Cookie có tpgiátr con hay không
– Values : tp các giá tr ca Cookie
© 2009 Khoa CNTT - HKHTN
16
Thitk & Lp trình Web 2 – Giithiumônhc
S dng CookiesS dng Cookies
S

dng

CookiesS

dng

Cookies
 Ghi cookies

Response.Cookies[cookie][(key)|.attribute] = value;
• cookie: tên bin
• ke
y
: tham s tù
y
ch

n, có thđ

t nhiu
g
iá tr


cho 1 cookie
y
y


g

• attribute: thuc tính (domain, path,….)
 cgiátr cookies
– value = Request.Cookies[cookie][(key)|.attribute]
© 2009 Khoa CNTT - HKHTN
17
Thitk & Lp trình Web 2 – Giithiumônhc
VíVí
dd

CookiesCookies
đnđn
VíVí
dd

Cookies

Cookies

đnđn
 Ghi
Response.Cookies["userName“].Value = "mike“;
Response.Cookies["userName“].Expires = DateTime.Now.AddDays(1);

 c
if (Request.Cookies["userName“] != null)
LabelUsername.Text = Request.Cookies["userName“].Value;



a
Response.Cookies["userName“].Expires=DateTime.Now.AddDays(-1);
© 2009 Khoa CNTT - HKHTN
18
Thitk & Lp trình Web 2 – Giithiumônhc
VíVí
dd

CookiesCookies
cócó
cáccác
subkeysubkey
VíVí
dd

Cookies

Cookies

cócó
cáccác
subkeysubkey
 Ghi
Response.Cookies["userInfo“]["userName“] = "mike“;

Response.Cookies[
"userInfo“]["lastVisit“]=DateTime.Now.ToString();
Response.Cookies[
"userInfo“].Expires = DateTime.Now.AddDays(1);
 c
if (Request.Cookies["userInfo“] != null) {
LabelUsername.Text = Request.Cookies["userInfo“]["userName“];
LabelLastVisit.Text = Request.Cookies[
"userInfo“]["lastVisit“];
}
 Xóa
Response.Cookies["userInfo“].Expires = DateTime.Now.AddDays(-1);
© 2009 Khoa CNTT - HKHTN
19
Thitk & Lp trình Web 2 – Giithiumônhc
VíVí
dd

HttpCookieHttpCookie
VíVí
dd

HttpCookieHttpCookie
 Ghi
HttpCookie cookie = new HttpCookie(“userInfo”);
cookie["userName“] = "mike“;
cookie["lastVisit“] = DateTime.Now.ToString();
cookie.Expires = DateTime.Now.AddDays(1);
Response.Cookies.Add(cookie);




c
HttpCookie cookie = Request.Cookies["userInfo“];
if (cookie != null) {
LabelUsername.Text = cookie["userName“];
LabelLastVisit.Text = cookie["lastVisit“];
}
© 2009 Khoa CNTT - HKHTN
}
20
Thitk & Lp trình Web 2 – Giithiumônhc
NiNi
dungdung
NiNi
dungdung
 Giithiuv Qunlýtrng thái
 Các đitng qunlýtrng thái ca ASP .NET
– Client-based State
– Server-based State
 C ch Cache ca ASP .NET
© 2009 Khoa CNTT - HKHTN
21
Thitk & Lp trình Web 2 – Giithiumônhc
ServerServer

based Statebased State
ServerServer

based


Statebased

State
 Là các đitng trng thái đc lutr máy Server
 Bao gm
– Session
– Application
© 2009 Khoa CNTT - HKHTN
22
Thitk & Lp trình Web 2 – Giithiumônhc
SessionSession
SessionSession
 Mt phiên làm vic (session) là mtchui các thao tác ca
ngi
dùng
trên
cùng
mt
web application
ngi
dùng
trên
cùng
mt
web

application
 Vimi phiên làm vicca client, s có mt Session
Object đctora,

– clutr trên server
– Cung cpnhng thông tin v phiên làm vichin hành ca
client
client
– c duy trì khi ngi dùng duytt WebForm sang
WebForm khác trong cùng mtsite
– B hykhi:
• Ngi dùng tng minh thoát khi session

Sau
m
t
kh
o
n
g
t
h

i
g
i
a
n
(t
im
e
-
out)


,
m
c
đ
nh l
à
2
0

p
h
út
© 2009 Khoa CNTT - HKHTN
Sau
t
o g
t 
ga
(t e
out) ,
c
đ
à
0
pút
23
Thitk & Lp trình Web 2 – Giithiumônhc
SS
dngdng
SessionSession

SS
dngdng
SessionSession
 Khito/ Gán giá tr cho bin Session
S i [“ ”] l
S
ess
i
on
[“
name
”]
= va
l
ue;
 cd liut bin Session
Object
obj
= (Object)Session[

name

];
Object

obj
=

(Object)Session[ name ];
 Qui đnh khong thigiantnticamt phiên làm vic

Session.Timeout
=
minutes;
Session.Timeout

minutes;
 Ly đnh danh ID duy nhtca phiên làm vic
Session.SessionID
 Hy phiên làm vic(hyc bind liu)
Session.Abandon();
© 2009 Khoa CNTT - HKHTN
24
Thitk & Lp trình Web 2 – Giithiumônhc
Ví dVí d

KimtraQuyn đng nhpKimtraQuyn đng nhp


d



d


Kim

tra

Quyn


đng

nhpKim

tra

Quyn

đng

nhp
Làm th nào đ ngn không cho ng i dùng tr cp

Làm

th

nào

đ

ngn

không

cho

ng


i

dùng

tr
uy
cp

vào các trang web nu cha đng nhp?

Ýtng

Ý

tng
– Dùng các bin Session đ lu trng thái đng nhp ca ngi
dùng:
Session[“IsLogin”] = 0/1 : Lu trng thái đng nhp
Session[“Username”] : Lu Tên đng nhp
Si[“Athtiti”]LL i  đ h
S
ess
i
on
[“A
u
th
en
ti
ca

ti
on
”]
:
L
u
L
o
i
quy

n
đ
ng n
h
p

© 2009 Khoa CNTT - HKHTN
25
Thitk & Lp trình Web 2 – Giithiumônhc
Làm th nào đ ngn không cho ngi dùng truy cp vào Làm th nào đ ngn không cho ngi dùng truy cp vào
các trang web nucha đng nhp?các trang web nucha đng nhp?
các

trang

web

nu


cha

đng

nhp?các

trang

web

nu

cha

đng

nhp?
1
Khitogiátr mc đnh cho bin Session[

IsLogin

]=0(cha
1
.
Khi

to

giá


tr

mc

đnh

cho

bin

Session[ IsLogin ]

=

0

(cha

đng nhp)
//global.asax
<script language="C#" runat="server">
void Session
_
OnStart(Object sender, EventArgs E)
{
Session[“IsLogin"] = 0;
}
/
<

/
script>
© 2009 Khoa CNTT - HKHTN
26
Thitk & Lp trình Web 2 – Giithiumônhc
Làm th nào đ ngn không cho ngi dùng truy cp vào Làm th nào đ ngn không cho ngi dùng truy cp vào
các trang web nucha đng nhp?các trang web nucha đng nhp?
các

trang

web

nu

cha

đng

nhp?các

trang

web

nu

cha

đng


nhp?
2
To trang Login aspx cho phép ngi dùng đng nhp
2
.
To

trang

Login
.
aspx

cho

phép

ngi

dùng

đng

nhp
– Nu kim tra thông tin đng nhp không đúng thì hin th thông
báo yêu cu đng nhp li.

Ngclinu ÚNG thì dùng mt(hoc nhiu) bin Session
Ngc


li
,
nu

ÚNG

thì

dùng

mt

(hoc

nhiu)

bin

Session

đ lu trng thái login thành công li.
//Login.aspx.cs
void btnLogin_Click(Object Src, EventArgs E)
{
if ([Thong tin dang nhap dung])
Session [“IsLogin"] = 1;
else
Response.Write(“Vui lòng nhpli!”);
}

© 2009 Khoa CNTT - HKHTN
27
Thitk & Lp trình Web 2 – Giithiumônhc
Làm th nào đ ngn không cho ngi dùng truy cp vào Làm th nào đ ngn không cho ngi dùng truy cp vào
các trang web nucha đng nhp?các trang web nucha đng nhp?
các

trang

web

nu

cha

đng

nhp?các

trang

web

nu

cha

đng

nhp?

3. Trong ttc các trang munbomt, kimtrangi dùng đã login
hay
cha
,
nu
cha
thì
redirect
li
trang
login.aspx
hay

cha
,

nu
cha
thì
redirect

li
trang
login.aspx
//MyForm.aspx.cs
void Page_Load(Object Src, EventArgs E){
it
DD Nh
(I t32) S i [“
IL i

"]
i
n
t
n
D
a
D
ang
Nh
ap =
(I
n
t32)

S
ess
i
on
[“
I
s
L
og
i
n
"]
;
if (nDaDangNhap == 0)
Response.Redirect(“Login.aspx”);

}
© 2009 Khoa CNTT - HKHTN
28
Thitk & Lp trình Web 2 – Giithiumônhc
Làm th nào đ ngn không cho ngi dùng truy cp vào Làm th nào đ ngn không cho ngi dùng truy cp vào
các trang web nucha đng nhp?các trang web nucha đng nhp?
các

trang

web

nu

cha

đng

nhp?các

trang

web

nu

cha

đng


nhp?
4
To
x

khi
ngi
dùng
logout
4
.
To
x

khi
ngi
dùng
logout
 Reset trng thái login là cha đng nhp
//MyForm.aspx.cs
void btnLogout_Click(Object Src, EventArgs E){
S
ession [“IsLo
g
in"] = 0;
g
Response.Redirect(“Login.aspx”);
}
© 2009 Khoa CNTT - HKHTN
29

Thitk & Lp trình Web 2 – Giithiumônhc
ApplicationApplication
ApplicationApplication
 Qunlýd liu dùng chung trong cùng mt ng dng web
 clutr trên server
 Có th truy xutbittc các session trong site
 Tnti trong sut chu trình sng ca ng dng web
© 2009 Khoa CNTT - HKHTN
30
Thitk & Lp trình Web 2 – Giithiumônhc
cc
vàvà
GhiGhi
ApplicationApplication
cc
vàvà
GhiGhi
ApplicationApplication
 Ghi thông tin
Application["SiteRequestCount"] = 0;
Application["SiteName“] = "www.site.com";
 cni dung t Application State
int count = (int)Application["SiteRequestCount"];
string name = (string)Application["SiteName"];
© 2009 Khoa CNTT - HKHTN
31
Thitk & Lp trình Web 2 – Giithiumônhc
XX
lýlý
vnvn

đđ
truytruy
xutxut
đngđng
thithi
ApplicationApplication
XX
lýlý
vnvn
đđ
truytruy
xutxut
đngđng
thithi
ApplicationApplication
 Lock application state đ hnch lixy ra do victruy
xut đn
g
thibi nhiu client re
q
uest
g
q
Application.Lock();
if (Application["SiteRequestCount"] == null)
{
Application["SiteRequestCount"] = 0;
}
count = (int)Application["SiteRequestCount"];
count++;

count++;
Application["SiteRequestCount"] = count;
Application.UnLock();
© 2009 Khoa CNTT - HKHTN
32
Thitk & Lp trình Web 2 – Giithiumônhc
KhiKhi
toto
ApplicationApplication
KhiKhi
toto
ApplicationApplication
 Khitobin Application trong file Global.asax
<%
@
Application
Language
="
C#
"
%>
<%
@

Application

Language
C#

%>

<script runat="server">
void Application_Start(object sender, EventArgs e)
{
// Code that runs on a
pp
lication startu
p
pp p
Application["SiteRequestCount"] = 0;
Application["SiteName"] = "www.somesite.com";
}
</script>
© 2009 Khoa CNTT - HKHTN
33
Thitk & Lp trình Web 2 – Giithiumônhc
Ví dVí d
––
ms ln duyt 1 trang webms ln duyt 1 trang web


d



d

––
m

s


ln

duyt

1

trang

webm

s

ln

duyt

1

trang

web
//global.asax
<script language="C#" runat="server">
void Application_OnStart(Object sender, EventArgs E) {
Application[“SoLan"] = 0;
}
}
</script>
//

M form asp cs
//
M
y
form
.
asp
x.
cs
void Page_Load(Object Src, EventArgs E){
Application.Lock();
Application[

SoLan
"
] = (Int32) Application [

SoLan
"
]+1;
Application[
SoLan
]

=

(Int32)

Application


[
SoLan
]

+

1;
Application.UnLock();
Response.Write(“S ln vào trang này :" + Application[“SoLan"]);
}
© 2009 Khoa CNTT - HKHTN
}
34
Thitk & Lp trình Web 2 – Giithiumônhc
NiNi
dungdung
NiNi
dungdung
 Giithiuv Qunlýtrng thái
 Các đitng qunlýtrng thái ca ASP .NET
– Client-based State
– Server-based State
 C ch Cache ca ASP .NET
© 2009 Khoa CNTT - HKHTN
35
Thitk & Lp trình Web 2 – Giithiumônhc
CacheCache
CacheCache
 Cache là mt vùng b nh trên server/client/proxy lutr
các

thông
tin
thng
xuyên
s
dng
ca
ng
dng
web
các
thông
tin

thng
xuyên
s
dng
ca
ng
dng
web

đ tái s dng cho các lntruycp sau mà không cnx
lý li
 Do đclutr trong b nh (memory) nên cho phép
truy xut nhanh chóng
 Nâng cao hiunng (performance) ca ng dng web
 Có th lubtk kiud liu nào
 Tnti trong khong thi gian qui đnh

© 2009 Khoa CNTT - HKHTN
36
Thitk & Lp trình Web 2 – Giithiumônhc
CC
chch
CacheCache
CC
chch
CacheCache
 Có 2 c ch Cache
1. Page Output Caching
• Luktqu render trên mt WebForm và s dng li  nhng ln
re
q
uest sau
q
– Lu toàn b WebForm
– Lumtphn WebForm
2. Application Data Caching
• Cho
p

p
l
p
trình lucácđitn
g
tron
g
Cache

pp
p
g
g
© 2009 Khoa CNTT - HKHTN
37
Thitk & Lp trình Web 2 – Giithiumônhc
Page Output CachingPage Output Caching
Page

Output

CachingPage

Output

Caching
 Lu toàn b trang web


Thêm chđnh OutputCache vào đ

u trang ASPX
• Duration: Thi gian (second) lu trang web

Location: Qui
đnh
ni
lu
cache: Any (default) Client Server

Location:

Qui

đnh
ni
lu
cache:

Any

(default)
,
Client
,
Server
,
ServerAndClient, DownStream, None
• VaryByParam: Lu nhiu phiên bn khác nhau ca trang web ph
thuc
vào
tham
s
truyn
t
querystring
thuc
vào
tham
s

truyn
t
querystring
<%@ OutputCache Duration="60" Location=“Server” VaryByParam="None"%>
<%@ OutputCache Duration="60" VaryByParam=“CatId“ %>
© 2009 Khoa CNTT - HKHTN
38
Thitk & Lp trình Web 2 – Giithiumônhc
Page Output CachingPage Output Caching
Page

Output

CachingPage

Output

Caching
 Lumtphn trang web

Control caching
• S dng Web User Control vich th OutputCache  đu trang
ASCX
– Post-cache substitution
• Thitlp OutputCache cho toàn b trang web

• Qui đnh nhng vùng Substitution cho phép thay đ

ini dung
© 2009 Khoa CNTT - HKHTN

39
Thitk & Lp trình Web 2 – Giithiumônhc
VíVí
dd

PostPost

cache Substitutioncache Substitution
VíVí
dd

PostPost

cache

Substitutioncache

Substitution
<div id="cartBox">
<h2>Your Shopping Cart</h2>
Sb i i
id "
bC
"
"“
hd
"
GC
"/
<asp:

S
u
b
st
i
tut
i
on
id
=
"
su
bC
art
"
runat=
"
server

Met
h
o
d
Name=
"
G
et
C
art
"


/
>
</div>
bli
i
i
(
)
pu
bli
c stat
i
c str
i
ng GetCart
(
HttpContext context
)
{
ShoppingCart cart = (ShoppingCart)context.Session["Cart"];
// Handle missing cart

// Output the cart item markup for this session to a string
string output = "";
foreach (CartItem item in cart)
{
{
output += "<p class='cartRow'>";
output += item.Name + "</p>";

}
t
tt
© 2009 Khoa CNTT - HKHTN
40
re
t
urn ou
t
pu
t
;
}
Thitk & Lp trình Web 2 – Giithiumônhc
Application Data CachingApplication Data Caching
Application

Data

CachingApplication

Data

Caching
 Using System.Web.Caching;
 Ghi d liu vào Cache
Book b = new Book(1, “Harry Potter”);
C h [“b k"] b
C
ac

h
e
[“b
oo
k"]
=
b
;
 Qui đnh thigiantntica Cache
Cache Insert
(

Book
"
b null
Cache NoAbsoluteExpiration
Cache
.
Insert
(
Book
,
b
,
null
,
Cache
.
NoAbsoluteExpiration
,

TimeSpan.FromMinutes(2)
); // expire sau 2 phút k t ln
truy cpcui
Cache.Insert
(

Book
"
, b, null,
DateTime.Now.AddMinutes
(2.0),
Cache.Insert
(
Book ,

b,

null,

DateTime.Now.AddMinutes
(2.0),

Cache.NoSlidingExpiration
); // expire trong vòng 2 phút
 cd liut Cache
© 2009 Khoa CNTT - HKHTN
Book b = (Book)Cache[“book"];
41
Thitk & Lp trình Web 2 – Giithiumônhc
TngTng

ktkt
TngTng
ktkt
 Client-based State
Vi St t

Vi
ew
St
a
t
e
– HiddenField

QueryString
QueryString
– Cookies
 Server-based State
– Session
– Application
 Cache
– Page Output Caching
Application Data Caching
© 2009 Khoa CNTT - HKHTN

Application

Data

Caching

42

×