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

277

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

// Lưu giữ ObjectToCache nếu nó được sử dụng ít nhất

// một lần mỗi 10 phút (với khóa là "Catalog").

// DateTime.MaxValue cho biết "không sử dụng absolute expiration".

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

DateTime.MaxValue, TimeSpan.FromMinutes(10));

Bạn có thể lấy các item từ cache bằng tên khóa. Tuy nhiên, bạn phải luôn kiểm tra trước xem
item có tồn tại hay không và rồi ép nó thành kiểu như mong muốn.
Khi thêm các đối tượng vào cache, cách tốt nhất là tạo một hàm độc lập có thể tái tạo đối
tượng khi cần. Ví dụ, nếu đang lưu giữ một

DataSet

, bạn cần tạo một hàm kiểm tra cache và

chỉ truy vấn lại cơ sở dữ liệu khi không tìm thấy

DataSet

. Điều này cho phép bạn tránh đi

phần xử lý tốn nhiều thời gian nhất—truy vấn cơ sở dữ liệu—trong khi vẫn cho phép mã lệnh
của bạn thay đổi hiển thị (chẳng hạn, người dùng yêu cầu sắp thứ tự) hoặc thực hiện các hành
động khác.
Ví dụ dưới đây sẽ hiển thị một bảng chứa thông tin về khách hàng được lấy từ một

DataSet

.

Phần then chốt là lớp

CustomerDatabase

, đóng gói các chức năng cần thiết để đổ dữ liệu vào

DataSet

và quản lý cache. Vì lớp này không thừa kế từ

Page

nên nó cần sử dụng thuộc tính

tĩnh

HttpContext.Current

để lấy tham chiếu đến đối tượng

Cache

.

using System;

using System.Data;

using System.Web;

using System.Configuration;

using System.Diagnostics;

using System.Web.Caching;

using System.Data.SqlClient;

public class CustomerDatabase {

private string connectionString;

// Lấy tham chiếu đến đối tượng Cache.

private Cache cache = HttpContext.Current.Cache;

public CustomerDatabase() {

// Lấy chuỗi kết nối từ file Web.config.

connectionString =

ConfigurationSettings.AppSettings["NorthwindCon"];

}

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.