CÁC GIẢI PHÁP LẬP TRÌNH C# - Trang 276

276
Chương 7: ASP.NET và Web Form

Trang của bạn chứa các điều kiểm post-back và dựng nên các sự kiện phía server.

Trang của bạn cần thực hiện một hành động khác (như ghi ra file nhật ký, nhập thông
tin vào cơ sở dữ liệu, hoặc thay đổi một biến ứng dụng). Một trang được lưu giữ sẽ sử
dụng lại toàn bộ HTML đã được trả về; phần mã cho trang bị bỏ qua.

Trang của bạn có chứa các dữ liệu cần phải được tạo cùng với các dữ liệu hiện hành.
Đây là trường hợp đối với tìm kiếm sản phẩm, nhưng không phải là trường hợp đối với
danh mục sản phẩm.

Trong các trường hợp này, bạn có thể sử dụng một dạng caching linh hoạt hơn. Bạn có thể sử
dụng data-caching (sẽ được mô tả trong mục 7.15) để lưu giữ một đối tượng cụ thể. Hoặc bạn
có thể sử dụng fragment-caching để lưu giữ một phần của trang. Để sử dụng fragment-
caching, bạn cần tạo một điều kiểm người dùng chứa tất cả nội dung có thể được lưu giữ và
thêm chỉ thị

OutputCache

vào điều kiểm người dùng. Khi đó, bạn có thể sử dụng điều kiểm

người dùng này trong một trang web. Phần mã cho trang web vẫn sẽ chạy, nhưng phần điều
kiểm người dùng có thể được lưu giữ.

15.

15.

Dùng l i d li u v i ASP.NET

ạ ữ ệ ớ

Dùng l i d li u v i ASP.NET

ạ ữ ệ ớ

Cache

Cache

Bạn cần sử dụng caching, nhưng bạn không thể lưu giữ toàn bộ một trang vì nó
chứa một số mã cần phải chạy hoặc một số nội dung cần phải được tạo động.

Sử dụng phương thức

Cache.Insert

để lưu giữ bất kỳ đối tượng nào với chính

sách hết hiệu lực trượt (sliding expiration) hoặc hết hiệu lực tuyệt đối (absolute
expiration
).

Đối tượng

Cache

cho phép bạn lưu giữ hầu như bất kỳ đối tượng .NET nào bằng một khóa

chuỗi cùng với chính sách hết hiệu lực do bạn định nghĩa. ASP.NET duy trì cache một cách tự
động, gỡ bỏ các đối tượng khi chúng hết hiệu lực hoặc khi cạn bộ nhớ.
Có hai kiểu chính sách hết hiệu lực bạn có thể sử dụng khi lưu giữ dữ liệu trong cache. Hết
hiệu lực tuyệt đối (absolute expiration) làm mất hiệu lực các item đã được lưu giữ sau một
khoảng thời gian cố định, gần giống với output-caching. Hết hiệu lực tuyệt đối là cách tiếp
cận tốt nhất nếu bạn muốn lưu giữ các thông tin cần được làm tươi định kỳ (như danh mục sản
phầm).

// Lưu giữ ObjectToCache trong 10 phút (với khóa là "Catalog").

// TimeSpan.Zero cho biết "không sử dụng sliding expiration".

Cache.Insert("Catalog", ObjectToCache, null,

DateTime.Now.AddMinutes(10), TimeSpan.Zero);

Hết hiệu lực trượt (sliding expiration) gỡ bỏ các đối tượng sau một khoảng thời gian không
dùng đến. Trong trường hợp này, mỗi khi đối tượng được truy xuất, thời gian sống của nó sẽ
được reset. Hết hiệu lực trượt làm việc tốt khi bạn có các thông tin luôn có hiệu lực nhưng
luôn không được sử dụng (như dữ liệu thuộc về quá khứ). Thông tin này không cần được làm
tươi, nhưng không nên giữ nó trong cache nếu nó không được sử dụng.

Liên Kết Chia Sẽ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.