โจทย์ส่วนตัวของผมคือ มีการดึงข้อมูลจาก Database ที่ไม่มีการเปลี่ยนแปลงแล้วมาแสดงผลเป็น web archives เมื่อสร้างหน้าเว็บออกมาแล้วมันใช้เวลาในการ load อยู่ระยะนึ่งเพราะมีข้อมูลอยู่พอสมควร
ทางออกที่ 1 ที่คิดได้คือ เปลี่ยน page aspx ไปเป็น HTML ธรรมดาโดยการเขียน Function แปลง aspx ไปเป็น HTML ปัญหาคือถ้ามีการเปลี่ยนแปลงใดๆเกิดขึ้นผมก็ต้องมา generate ใหม่และหน้าหลักของผมแยกออกเป็น 5 ทางเลือก ผมต้องทำหน้า HTML 5 หน้าขึ้นมา (ดูไม่ค่อยดีเท่าไร)
ทางออกที่ 2 (คิดได้ที่หลัง ตอนก่อนอาบน้ำตอนเช้า) ถ้าเราสามารถ cahing result ที่ได้มาจาก database ได้ในหน้า aspx ก็คงจะดี
ถึงที่ทำงานเปิด google serach "asp.net cache database result" ได้หน้า
http://msdn.microsoft.com/en-us/library/ms972379.aspx
http://vsreddy.wordpress.com/2008/07/23/database-caching-in-aspnet/
http://asp.net-tutorials.com/caching/output-cache/
http://support.microsoft.com/kb/323290/th
สรุปคือ เพิ่มคำสั่งในหน้า aspx ส่วนบนสุดเข้าไป
<%@ OutputCache Duration="5" VaryByParam=”None” Location="Server" %>
Duration หน่วยเป็นวินาที server จะไปดูว่าถ้า cache ยังไม่ expire ก็เอาค่าจาก cache มาแต่ถ้า cahe expire แล้วก็ไปดึงค่าใหม่มาใส่ใน cache แล้วเอามาแสดงผล
VaryByParam
= None ไม่มีขึ้นกับ parameter ใดๆเป็นเหมือนกันทั้ง Page
= Same Param ขึ้นอยู่กับ Parameter Value ที่กำหนดลงไป เช่น กำหนด VaryByParam="campus"
ถ้า campus ต่างกันมันก็จะเก็บไว้คนละ cache กัน
ตัวอย่าง campus=5 ก็จะ cache result ไว้ค่านึ่ง ถ้า campus=9 ก็จะเก็บ cahce result ไว้ที่นึ่ง
และค่า VaryByParam ส่งมาได้หลายค่าแยกโดย semicolon
location =
* Any -เก็บ cache result browser, proxy server ,Server
* Client- browser
* Server
* None-ปิดการงาน cache
*...
OutputCache - varybycontrol ขึ้นอยู่กับค่าของ Control ในหน้า aspx
OutputCache - varybycustom สร้างค่าที่มีผลกับ cache ขึ้นมาเอง
OutputCache - varybyheader ...
ไม่มีความคิดเห็น:
แสดงความคิดเห็น