Cache trong mvc

0
175
outputcache
outputcache

Xin chào các bạn

Hôm nay mình sẽ giới thiệu đến các bạn về cache hay dùng nhất trong mvc.Trong mvc người ta hay dùng nhất là OutputCache.

Về lý thuyết thì mình cũng không nói nhiều ,các bạn có thể tìm đọc ,hôm nay mình sẽ lấy code ra làm ví dụ cho các bạn dễ hiểu trước khi bắt đầu mình sẽ nói sơ qua những từ khóa sử dụng trong OutputCache.

  • Duration : Đây là thời gian quy định cache sẽ được làm mới lại 1 lần ,đơn vị nó sẽ tính bằng giây.
  • VaryByPara: Cache sẽ lưu trữ trên 1 tham số ,nói nôm na là khi bạn viết 1 hàm trên controller mà hàm đó có dùng tham số thì bạn truyền tham số đó vào.
  • Location : Đây là vị trí lưu của cache ,nó có 5 vị trí lưu :
    • Any (mặc định):Nội dung được lưu trữ trong ba locations- Web Server, bất kỳ máy chủ proxy và trình duyệt Web.
    • Client: Nội dung được lưu trữ trên Trình duyệt web
    • Server: Nội dung được lưu trữ trên Máy chủ Web.
    • ServerAndClient: Nội dung được lưu trữ trên Máy chủ Web và Trình duyệt web.
    • None : Nội dung không được lưu trữ ở bất cứ đâu.

Sau đây là ví dụ :

  • Thời gian lưu là 60 giây ,tham số là None lưu ở Client


[OutputCache(Duration = 60, VaryByParam = "None", , Location = OutputCacheLocation.Client)]
public ActionResult Index(int Id) {
return View();
}

  • Thời gian lưu là 60 giây ,tham số là Id lưu ở Client


[OutputCache(Duration = 60, VaryByParam = "Id", , Location = OutputCacheLocation.Client)]
public ActionResult Index(int Id) {
return View();
}

  • Thời gian lưu là 60 giây ,tham số là Id,SLug lưu ở Client


[OutputCache(Duration = 60, VaryByParam = "Id;Slug", , Location = OutputCacheLocation.Client)]
public ActionResult Index(int Id) {
return View();
}

Nếu như các bạn thấy nó dài quá thì mình có thể rút gọn lại với việc dùng CacheProfile

Các bạn thêm vào trong webconfig như sau

<caching>

<outputCacheSettings>

<outputCacheProfiles>

<add name=“Long” duration=“60” varyByParam=“Id” />

<add name=“Medium” duration=“60” varyByParam=“Id;SLug” />

<add name=“Short” duration=“10” varyByParam=“none” />

</outputCacheProfiles>

</outputCacheSettings>

</caching>

Và bạn sử dụng :

[OutputCache(CacheProfile = “Long”)]

public ActionResult Index(int Id) {

return View(emps);

}