Home > Programming > What’s New in ASP.NET 4.0 (ตอน New Output Caching)

What’s New in ASP.NET 4.0 (ตอน New Output Caching)


มีอะไรใหม่ใน asp.net 4.0 ตอนนี้จะกล่าวถึง New Output Caching ครับ

ปกติแล้ว เราสามารถที่จะเพิ่มความเร็วของ asp.net ได้โดยการทำ page cache ได้ โดยมีตัวอย่างการ config ในไฟล์ web.config ดังตัวอย่างครับ

<%@ OutputCache Duration=”60″ VaryByParam=”None” %>

 

จากตัวอย่างการ config ข้างต้น จะเป็นการตั้งอายุของ cache ไว้ที่ 60 วินาทีครับ โดยสิ่งที่ cache เก็บก็คือผลลัพธ์ของ HTML ที่ asp.net ส่งไปยัง browser ของ user ถ้ามี user คนอื่นต้องการจะดู page เดียวกัน ทาง asp.net จะส่ง html result ที่เก็บไว้ใน cache ส่งไปให้แทน โดยไม่ต้อง generate html กันใหม่ครับ ซึ่งผลที่ได้ก็คือทำให้ asp.net ทำงานได้เร็วขึ้นนั่นเอง

แต่การเก็บ cache นั้นโดย asp.net รุ่นเก่าๆ จะเก็บไว้ใน memory เพียงอย่างเดียว ซึ่งก็มีข้อเสียครับ คือทำให้ server ใช้ memory ที่ค่อนข้างเยอะพอสมควร ซึ่งในบางครั้งอาจจะทำให้ Memory ที่ใช้งานมีไม่เพียงพอ ซึ่งในจุดนี้ก็โดนบ่นมาเยอะพอสมควรครับ

ใน asp.net 4.0 ได้เปิดโอกาสให้เราสามารถเลือก output-cache provider ได้ เพื่อที่จะเก็บ html content ไว้ โดย storage ที่เราสามารถเลือกได้นอกจาก memory ก็มี localdisk, remote disk, cloud storage หรือแม้กระทั่ง distributed cache engines

นอกจากนี้ใน cache รุ่นใหม่นี้ยังมี option ที่น่าสนใจอีกนะครับ เช่น เราสามารถที่จะเลือกเก็บ cache เฉพาะ page ที่มีคนดูบ่อยๆ ก็ได้อีกด้วย ถือว่าได้มีการปรับปรุงขึ้นมาน่าสนใจไม่น้อยทีเดียว

การสร้าง output-cache provider นั้นจะต้องสร้างเป็น class ขึ้นมา โดยจะต้อง inherit มาจาก class ที่ชื่อว่า OutputCacheProvider ซึ่งเป็น class ที่มีมาใหม่ใน asp.net 4.0

โดยวิธีการ config มีตัวอย่างดัง code ดังนี้ครับ

<caching>
    <outputCache defaultProvider=”AspNetInternalProvider”>
        <providers>
            <add name=”DiskCache” type=”Test.OutputCacheEx.DiskOutputCacheProvider, DiskCacheProvider”/>
        </providers>
    </outputCache>
</caching>

 

สังเกตุว่าเราจะตั้งชื่อไว้เป็น “DiskCache” และมี default provider เป็น “AspNetInternalProvider” ดังนั้นเวลาเราจะนำ provider ตัวนี้มาใช้งานก็ให้เขียน web.config ดังนี้

<%@ OutputCache Duration=”60″ VaryByParam=”None” providerName=”DiskCache” %>

 

ถ้าเราระบุ providerName ก็จะใช้ output-cache provider เป็น DiskOutputCachProvider แต่ถ้าเราไม่ระบุก็จะกลับไปใช้ AspNetInternalProvider ตามที่ระบุใน default Provider ครับ

และเราก็สามารถระบุ output-cache provider ใน global.asax ได้เหมือนกันครับ ดังตัวอย่างใน code

public override string GetOutputCacheProviderName(HttpContext context)
{
    if (context.Request.Path.EndsWith(“Advanced.aspx”))
       return “DiskCache”;
    else
        return base.GetOutputCacheProviderName(context);
}

 

Reference: http://msdn.microsoft.com/en-us/library/s57a598e(v=VS.100).aspx

หลักสูตรอบรม: .net programming

Categories: Programming
  1. No comments yet.
  1. No trackbacks yet.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

%d bloggers like this: