:: Kunagorn Sirikup :: C# Developer

17/5/56

Improving Performance with Output Caching


Output Caching เป็นอีกวิธีหนึงในการเพิ่มประสิทธิภาพของ ASP.NET MVC โดย Output Cache จะช่วยให้ Content ที่ถูก Return จาก Controller Action ที่มีเนื้อหาเดียวกันจะไม่ถูกสร้างทุกครั้ง

ยกตัวอย่าง ASP.NET MVC ต้องการแสดงข้อมูลจาก Database ผ่าน View Index โดยทั่วไปต้องมีการ Execute เพื่อดึงข้อมูลที่ Controller Action  แล้ว Retun ข้อมูลมาที่ View Index เท่ากับว่าจะมีการ Retrieve ข้อมูลทุกครั้ง ซึ่งบางทีข้อมูลที่ Retrieve  มาไม่ได้มีการเปลี่ยนแปลงทำให้เกิดการทำงานซ้ำซ้อนบน Server

ในการเพิ่มประสิทธิภาพ ASP.NET MVC จึงใช้ Ouput Cache เพื่อหลีกเลี่ยงการ Execute Database ทุกครั้ง ดังนั้นเมื่อผู้ใช้ Request ไปที่ Controlller Action เดิม View index จะ Retrieve ข้อมูลจาก Cache แทน

Enabling Output Caching
เราสามารถใช้งาน Output Caching ได้โดยการกำหนด Attribute [OutputCache] บน Controller Action

using System.Web.Mvc;

namespace MvcApplication1.Controllers
{
    [HandleError]
    public class HomeController : Controller
    {
        [OutputCache(Duration=10, VaryByParam="none")]
        public ActionResult Index()
        {
            return View();
        }

    }
}

จาก Code ข้างบนจะเป็นการกำหนดว่าถามีการเรียก Controller Action Index จะมีการเก็บ Cache โดยมี Parameters คือ Duration บอกว่าเราต้องการเก็บข้อมูล Cache ไว้กี่วินาที ในตัวอย่างจะมีการเก็บ Cache ไว้ 10 วินาที ส่วน VaryByParam ช่วยให้เราสามารถสร้าง Cache Version จาก Parameter หรือ Query String ที่ต่างกัน มีค่า Default เป็น "none" โดยมี Parameters ต่างๆดังนี

   Location="Any | Client | Downstream | Server | None | ServerAndClient "
   Shared="True | False"
   VaryByControl="controlname"
   VaryByCustom="browser | customstring"
   VaryByHeader="headers"
   VaryByParam="parametername" 
   VaryByContentEncoding="encodings"
   CacheProfile="cache profile name | ''"
   NoStore="true | false"
   SqlDependency="database/table name pair | CommandNotification"


ไม่มีความคิดเห็น:

แสดงความคิดเห็น