Thitk & Lp trình Web 2
Bài 8
QunQunlýlý TrngTrng tháithái vivi ASP .NETASP .NET
Ths. TrnTh Bích Hnh
Khoa CNTT Khoa CNTT –– H.KHTNH.KHTN
© 2009 Khoa Công ngh thông tin
Thitk & Lp trình Web 2 – Giithiumônhc
NiNi
dungdung
NiNi
dungdung
Giithiuv Qunlýtrng thái
Các đitng qunlýtrng thái ca ASP .NET
– Client-based State
– Server-based State
C ch Cache ca ASP .NET
© 2009 Khoa CNTT - HKHTN
2
Thitk & Lp trình Web 2 – Giithiumônhc
NiNi
dungdung
NiNi
dungdung
Giithiuv Qunlýtrng thái
Các đitng qunlýtrng thái ca ASP .NET
– Client-based State
– Server-based State
C ch Cache ca ASP .NET
© 2009 Khoa CNTT - HKHTN
3
Thitk & Lp trình Web 2 – Giithiumônhc
QunQun
lýlý
TrngTrng
tháithái
QunQun
lýlý
TrngTrng
tháithái
Mi ng dng web cn chia s thông tin gia các request
Giao thc HTTP là Stateless
– Mi request gi đnserver đcxemlàmt request mi
– Thông tin ca request trcs không tnti cho request sau
ASP .NET cung cpcácc ch cho phép qun lý thông
ti
i
á
t
ti
n g
i
ac
á
c reques
t
– Các đitng qunlýtrng thái (State) phía Client và Server
C
h
Ch
–
C
c
h
C
ac
h
e
© 2009 Khoa CNTT - HKHTN
4
Thitk & Lp trình Web 2 – Giithiumônhc
NiNi
dungdung
NiNi
dungdung
Giithiuv Qunlýtrng thái
Các đitng qunlýtrng thái ca ASP .NET
– Client-based State
– Server-based State
C ch Cache ca ASP .NET
© 2009 Khoa CNTT - HKHTN
5
Thitk & Lp trình Web 2 – Giithiumônhc
ClientClient
based Statebased State
ClientClient
based
Statebased
State
Là các đitng trng thái đc lutr máy Client
Bao gm
– ViewState
– Hidden Fields
– QueryStrings
–
Cookies
© 2009 Khoa CNTT - HKHTN
6
Thitk & Lp trình Web 2 – Giithiumônhc
ViewStateViewState
ViewStateViewState
Duy trì thông tin trng thái ca các control trên mt trang
web
gia
các
ln
postback
xy
ra
web
gia
các
ln
postback
xy
ra
c mã hóa và nhúng trong trang web didng n
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE"
value="/wEPDwUJNjI3NjE4OTU5ZGTI7l3xKXYAdsL8nY4w0bddpzSkRQ"
/>
Không thích hp cho các control cha nhiud liunh
GridView, Repeater…
© 2009 Khoa CNTT - HKHTN
7
Thitk & Lp trình Web 2 – Giithiumônhc
Enable & DisableEnable & Disable
ViewStateViewState
Enable
&
Disable
Enable
&
Disable
ViewStateViewState
Mc đnh ViewState đckíchhot (enable) cho ttc
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" … %>
Mts Control c bnnh TextBox, DropDownList… luôn
duy
trì
ViewState
cho
dù
ViewState
đã
b
Disable
© 2009 Khoa CNTT - HKHTN
duy
trì
ViewState
cho
dù
ViewState
đã
b
Disable
8
Thitk & Lp trình Web 2 – Giithiumônhc
LpLp
trìnhtrình
QunQun
lýlý
ViewStateViewState
LpLp
trìnhtrình
QunQun
lýlý
ViewStateViewState
Mc đích: lu thông tin b sung giacácln post-back
trên
cùng
mt
trang
web
trên
cùng
mt
trang
web
ViewState có th lutr d liuthuc kiuc s hoc
kiu
tham
chiu
(
đi
tng
-
object)
kiu
tham
chiu
(
đi
tng
object)
Lu ViewState ( name – value )
Vi St t
["
RtCt
"] t
Truy xut ViewState (phi ép v kiu tng ng)
Vi
ew
St
a
t
e
["
R
eques
tC
oun
t
"]
= coun
t
;
int count = (int)ViewState["RequestCount"];
© 2009 Khoa CNTT - HKHTN
9
Thitk & Lp trình Web 2 – Giithiumônhc
Serialization &Serialization &
DeserializationDeserialization
Serialization
&
Serialization
&
DeserializationDeserialization
Thông tin trong ViewState đc serialize vào thi đim
runtime
đ
lu
tr
và
sau
đó
deserialize
đ
khôi
phc
runtime
đ
lu
tr
và
sau
đó
deserialize
đ
khôi
phc
thành đitng ban đu
–
Serialization:
Q
ui trình chu
y
n đim
tob
j
ect san
g
m
tdã
y
Q
y
jg
y
bytes đ lutr
– Deserialization: Qui trình khôi phc dãy bytes thành đitng
b
đ
b
an
đ
u
mt đitng có th serialize và lutrđc trong
ViewState
ta
phi
b
sung
thuc
tính
Serializable
vào
đu
ViewState
,
ta
phi
b
sung
thuc
tính
Serializable
vào
đu
khai báo lp
[Serializable]
© 2009 Khoa CNTT - HKHTN
public class Book { … }
10
Thitk & Lp trình Web 2 – Giithiumônhc
VíVí
dd
VíVí
dd
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
Thitk & Lp trình Web 2 – Giithiumônhc
HiddenFieldHiddenField
HiddenFieldHiddenField
Lutr trng thái trong WebForm gia các postback
Render v phía trình duytvith
<input type=‘hidden’ />
Có th s dng hidden field đ lutr trng thái cacác
control trong WebForm
ngay c khi ViewState b disable
Ch thích hp trong viclutr d liuthucv kiuc
s ( int, float, string, … )
© 2009 Khoa CNTT - HKHTN
12
Thitk & Lp trình Web 2 – Giithiumônhc
QueryStringQueryString
QueryStringQueryString
Là thông tin b sung thêm vào cuichui URL
http://domain/pathfile?name1=value1&name2=value2
Quer
y
strin
g
đ
c Url encoded
(
các k
ý
t
đ
cbi
tho
c
yg
(
ý
duxuthin trong query string đu đc thay th )
/> Thông tin truyn đib giihn (IE – 2Kb)
Không
thích
hp
truyn
các
thông
tin
bo
mt
Không
thích
hp
truyn
các
thông
tin
bo
mt
Nhn thông tin truynt Query string
string name =
Request QueryString
[
“
name
"
]
ToString
();
© 2009 Khoa CNTT - HKHTN
string
name
=
Request
.
QueryString
[
name
]
.
ToString
();
13
Thitk & Lp trình Web 2 – Giithiumônhc
CookiesCookies
CookiesCookies
Là các thông tin (name – value) đc lu trong mthoc
nhiu
tp
tin
trên
máy
tính
client
nhiu
tp
tin
trên
máy
tính
client
Các tp tin cookies do Browser qunlý
Kích thc catp tin cookies có giihn (khong 4Kb)
Browser s tđng xóa file cookie vào thi đim đcch
đ h
t
th
tí h
Ei
ki
đ
n
h
t
rong
th
u
c
tí
n
h
E
xp
i
res c
acoo
ki
e
ng dng lu các thông tin v Client đ tái s dng
nhng
ln
s
dng
sau
:
nhng
ln
s
dng
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
Thitk & Lp trình Web 2 – Giithiumônhc
CC
chch
hothot
đngđng
caca
CookieCookie
CC
chch
hothot
đngđng
caca
CookieCookie
Browser và Server trao đi cookie khi có request đnmt
page
bt
k
trong
cùng
mt
site (domain)
page
bt
k
trong
cùng
mt
site
(domain)
Browser qunlýkhông cho cookie trong domain này
truyn
đn
domain
khác
truyn
đn
domain
khác
S lng file cookie trong mt domain có giihn (IE – 20
files
)
)
© 2009 Khoa CNTT - HKHTN
15
Thitk & Lp trình Web 2 – Giithiumônhc
HttpCookieHttpCookie
HttpCookieHttpCookie
Lp đitng qun lý thông tin Cookie trong ASP.NET
Cá
th
tí h
Htt C ki
Cá
c
th
u
c
tí
n
h
c
a
Htt
p
C
oo
ki
e
– Name : tên ca Cookie
–
Value :
Giá
tr
ca
Cookie
Value
:
Giá
tr
ca
Cookie
– Domain : domain cookie này thucv.
– Expires : xác đnh thigiancóhiulcca Cookie
– HasKeys : Cookie có tpgiátr con hay không
– Values : tp các giá tr ca Cookie
© 2009 Khoa CNTT - HKHTN
16
Thitk & Lp trình Web 2 – Giithiumônhc
S dng CookiesS dng Cookies
S
dng
CookiesS
dng
Cookies
Ghi cookies
–
Response.Cookies[cookie][(key)|.attribute] = value;
• cookie: tên bin
• ke
y
: tham s tù
y
ch
n, có thđ
t nhiu
g
iá tr
cho 1 cookie
y
y
g
• attribute: thuc tính (domain, path,….)
cgiátr cookies
– value = Request.Cookies[cookie][(key)|.attribute]
© 2009 Khoa CNTT - HKHTN
17
Thitk & Lp trình Web 2 – Giithiumônhc
VíVí
dd
CookiesCookies
đnđn
VíVí
dd
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;
Xó
Xó
a
Response.Cookies["userName“].Expires=DateTime.Now.AddDays(-1);
© 2009 Khoa CNTT - HKHTN
18
Thitk & Lp trình Web 2 – Giithiumônhc
VíVí
dd
CookiesCookies
cócó
cáccác
subkeysubkey
VíVí
dd
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
Thitk & Lp trình Web 2 – Giithiumônhc
VíVí
dd
HttpCookieHttpCookie
VíVí
dd
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
Thitk & Lp trình Web 2 – Giithiumônhc
NiNi
dungdung
NiNi
dungdung
Giithiuv Qunlýtrng thái
Các đitng qunlýtrng thái ca ASP .NET
– Client-based State
– Server-based State
C ch Cache ca ASP .NET
© 2009 Khoa CNTT - HKHTN
21
Thitk & Lp trình Web 2 – Giithiumônhc
ServerServer
based Statebased State
ServerServer
based
Statebased
State
Là các đitng trng thái đc lutr máy Server
Bao gm
– Session
– Application
© 2009 Khoa CNTT - HKHTN
22
Thitk & Lp trình Web 2 – Giithiumônhc
SessionSession
SessionSession
Mt phiên làm vic (session) là mtchui các thao tác ca
ngi
dùng
trên
cùng
mt
web application
ngi
dùng
trên
cùng
mt
web
application
Vimi phiên làm vicca client, s có mt Session
Object đctora,
– clutr trên server
– Cung cpnhng thông tin v phiên làm vichin hành ca
client
client
– c duy trì khi ngi dùng duytt WebForm sang
WebForm khác trong cùng mtsite
– B hykhi:
• Ngi dùng tng minh thoát khi 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
Thitk & Lp trình Web 2 – Giithiumônhc
SS
dngdng
SessionSession
SS
dngdng
SessionSession
Khito/ Gán giá tr cho bin Session
S i [“ ”] l
S
ess
i
on
[“
name
”]
= va
l
ue;
cd liut bin Session
Object
obj
= (Object)Session[
“
name
”
];
Object
obj
=
(Object)Session[ name ];
Qui đnh khong thigiantnticamt phiên làm vic
Session.Timeout
=
minutes;
Session.Timeout
minutes;
Ly đnh danh ID duy nhtca phiên làm vic
Session.SessionID
Hy phiên làm vic(hyc bind liu)
Session.Abandon();
© 2009 Khoa CNTT - HKHTN
24
Thitk & Lp trình Web 2 – Giithiumônhc
Ví dVí d
KimtraQuyn đng nhpKimtraQuyn đng nhp
Ví
d
Ví
d
Kim
tra
Quyn
đng
nhpKim
tra
Quyn
đng
nhp
Làm th nào đ ngn không cho ng i dùng tr cp
Làm
th
nào
đ
ngn
không
cho
ng
i
dùng
tr
uy
cp
vào các trang web nu cha đng nhp?
Ýtng
Ý
tng
– Dùng các bin Session đ lu trng thái đng nhp ca ngi
dùng:
Session[“IsLogin”] = 0/1 : Lu trng thái đng nhp
Session[“Username”] : Lu Tên đng nhp
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
Thitk & Lp trình Web 2 – Giithiumônhc
Làm th nào đ ngn không cho ngi dùng truy cp vào Làm th nào đ ngn không cho ngi dùng truy cp vào
các trang web nucha đng nhp?các trang web nucha đng nhp?
các
trang
web
nu
cha
đng
nhp?các
trang
web
nu
cha
đng
nhp?
1
Khitogiátr mc đnh cho bin Session[
“
IsLogin
”
]=0(cha
1
.
Khi
to
giá
tr
mc
đnh
cho
bin
Session[ IsLogin ]
=
0
(cha
đng nhp)
//global.asax
<script language="C#" runat="server">
void Session
_
OnStart(Object sender, EventArgs E)
{
Session[“IsLogin"] = 0;
}
/
<
/
script>
© 2009 Khoa CNTT - HKHTN
26
Thitk & Lp trình Web 2 – Giithiumônhc
Làm th nào đ ngn không cho ngi dùng truy cp vào Làm th nào đ ngn không cho ngi dùng truy cp vào
các trang web nucha đng nhp?các trang web nucha đng nhp?
các
trang
web
nu
cha
đng
nhp?các
trang
web
nu
cha
đng
nhp?
2
To trang Login aspx cho phép ngi dùng đng nhp
2
.
To
trang
Login
.
aspx
cho
phép
ngi
dùng
đng
nhp
– Nu kim tra thông tin đng nhp không đúng thì hin th thông
báo yêu cu đng nhp li.
–
Ngclinu ÚNG thì dùng mt(hoc nhiu) bin Session
Ngc
li
,
nu
ÚNG
thì
dùng
mt
(hoc
nhiu)
bin
Session
đ lu trng thái login thành công li.
//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 nhpli!”);
}
© 2009 Khoa CNTT - HKHTN
27
Thitk & Lp trình Web 2 – Giithiumônhc
Làm th nào đ ngn không cho ngi dùng truy cp vào Làm th nào đ ngn không cho ngi dùng truy cp vào
các trang web nucha đng nhp?các trang web nucha đng nhp?
các
trang
web
nu
cha
đng
nhp?các
trang
web
nu
cha
đng
nhp?
3. Trong ttc các trang munbomt, kimtrangi dùng đã login
hay
cha
,
nu
cha
thì
redirect
li
trang
login.aspx
hay
cha
,
nu
cha
thì
redirect
li
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
Thitk & Lp trình Web 2 – Giithiumônhc
Làm th nào đ ngn không cho ngi dùng truy cp vào Làm th nào đ ngn không cho ngi dùng truy cp vào
các trang web nucha đng nhp?các trang web nucha đng nhp?
các
trang
web
nu
cha
đng
nhp?các
trang
web
nu
cha
đng
nhp?
4
To
x
lý
khi
ngi
dùng
logout
4
.
To
x
lý
khi
ngi
dùng
logout
Reset trng thái login là cha đng nhp
//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
Thitk & Lp trình Web 2 – Giithiumônhc
ApplicationApplication
ApplicationApplication
Qunlýd liu dùng chung trong cùng mt ng dng web
clutr trên server
Có th truy xutbittc các session trong site
Tnti trong sut chu trình sng ca ng dng web
© 2009 Khoa CNTT - HKHTN
30
Thitk & Lp trình Web 2 – Giithiumônhc
cc
vàvà
GhiGhi
ApplicationApplication
cc
vàvà
GhiGhi
ApplicationApplication
Ghi thông tin
Application["SiteRequestCount"] = 0;
Application["SiteName“] = "www.site.com";
cni dung t Application State
int count = (int)Application["SiteRequestCount"];
string name = (string)Application["SiteName"];
© 2009 Khoa CNTT - HKHTN
31
Thitk & Lp trình Web 2 – Giithiumônhc
XX
lýlý
vnvn
đđ
truytruy
xutxut
đngđng
thithi
ApplicationApplication
XX
lýlý
vnvn
đđ
truytruy
xutxut
đngđng
thithi
ApplicationApplication
Lock application state đ hnch lixy ra do victruy
xut đn
g
thibi nhiu 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
Thitk & Lp trình Web 2 – Giithiumônhc
KhiKhi
toto
ApplicationApplication
KhiKhi
toto
ApplicationApplication
Khitobin 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
Thitk & Lp trình Web 2 – Giithiumônhc
Ví dVí d
––
ms ln duyt 1 trang webms ln duyt 1 trang web
Ví
d
Ví
d
––
m
s
ln
duyt
1
trang
webm
s
ln
duyt
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 ln vào trang này :" + Application[“SoLan"]);
}
© 2009 Khoa CNTT - HKHTN
}
34
Thitk & Lp trình Web 2 – Giithiumônhc
NiNi
dungdung
NiNi
dungdung
Giithiuv Qunlýtrng thái
Các đitng qunlýtrng thái ca ASP .NET
– Client-based State
– Server-based State
C ch Cache ca ASP .NET
© 2009 Khoa CNTT - HKHTN
35
Thitk & Lp trình Web 2 – Giithiumônhc
CacheCache
CacheCache
Cache là mt vùng b nh trên server/client/proxy lutr
các
thông
tin
thng
xuyên
s
dng
ca
ng
dng
web
các
thông
tin
thng
xuyên
s
dng
ca
ng
dng
web
đ tái s dng cho các lntruycp sau mà không cnx
lý li
Do đclutr trong b nh (memory) nên cho phép
truy xut nhanh chóng
Nâng cao hiunng (performance) ca ng dng web
Có th lubtk kiud liu nào
Tnti trong khong thi gian qui đnh
© 2009 Khoa CNTT - HKHTN
36
Thitk & Lp trình Web 2 – Giithiumônhc
CC
chch
CacheCache
CC
chch
CacheCache
Có 2 c ch Cache
1. Page Output Caching
• Luktqu render trên mt WebForm và s dng li nhng ln
re
q
uest sau
q
– Lu toàn b WebForm
– Lumtphn WebForm
2. Application Data Caching
• Cho
p
hé
p
l
p
trình lucácđitn
g
tron
g
Cache
pp
p
g
g
© 2009 Khoa CNTT - HKHTN
37
Thitk & Lp trình Web 2 – Giithiumônhc
Page Output CachingPage Output Caching
Page
Output
CachingPage
Output
Caching
Lu toàn b trang web
–
Thêm chđnh OutputCache vào đ
u trang ASPX
• Duration: Thi gian (second) lu trang web
•
Location: Qui
đnh
ni
lu
cache: Any (default) Client Server
Location:
Qui
đnh
ni
lu
cache:
Any
(default)
,
Client
,
Server
,
ServerAndClient, DownStream, None
• VaryByParam: Lu nhiu phiên bn khác nhau ca trang web ph
thuc
vào
tham
s
truyn
t
querystring
thuc
vào
tham
s
truyn
t
querystring
<%@ OutputCache Duration="60" Location=“Server” VaryByParam="None"%>
<%@ OutputCache Duration="60" VaryByParam=“CatId“ %>
© 2009 Khoa CNTT - HKHTN
38
Thitk & Lp trình Web 2 – Giithiumônhc
Page Output CachingPage Output Caching
Page
Output
CachingPage
Output
Caching
Lumtphn trang web
–
Control caching
• S dng Web User Control vich th OutputCache đu trang
ASCX
– Post-cache substitution
• Thitlp OutputCache cho toàn b trang web
• Qui đnh nhng vùng Substitution cho phép thay đ
ini dung
© 2009 Khoa CNTT - HKHTN
39
Thitk & Lp trình Web 2 – Giithiumônhc
VíVí
dd
PostPost
cache Substitutioncache Substitution
VíVí
dd
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
;
}
Thitk & Lp trình Web 2 – Giithiumônhc
Application Data CachingApplication Data Caching
Application
Data
CachingApplication
Data
Caching
Using System.Web.Caching;
Ghi d liu 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 thigiantntica 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 ln
truy cpcui
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 liut Cache
© 2009 Khoa CNTT - HKHTN
Book b = (Book)Cache[“book"];
41
Thitk & Lp trình Web 2 – Giithiumônhc
TngTng
ktkt
TngTng
ktkt
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