การล้างแคชหน้าใน ASP.NET

เมื่อพัฒนาบล็อกด้วย ASP.NET คุณมักต้องการปรับปรุงประสิทธิภาพโดยการใช้ แคชเอาต์พุต ซึ่งจะช่วยให้คุณเก็บสำเนาแคชของหน้าเว็บไว้เป็นระยะเวลาที่กำหนด—ช่วยให้เวลาการโหลดดีขึ้นและลดภาระบนเซิร์ฟเวอร์ อย่างไรก็ตาม มีความท้าทายเกิดขึ้นเมื่อผู้ใช้มีปฏิสัมพันธ์กับหน้าเว็บของคุณ เช่น การโพสต์ความคิดเห็น คุณต้องการให้การกระทำเหล่านี้สะท้อนกลับมาทันที ดังนั้นคำถามคือ คุณจะล้างแคชหน้าใน ASP.NET เมื่อมีการโพสต์ความคิดเห็นใหม่ได้อย่างไร?

การเข้าใจแคชเอาต์พุต

ก่อนที่จะเข้าสู่ทางแก้ไข ให้เราลองมามองแค่การทำงานของแคชเอาต์พุตใน ASP.NET สั้นๆ โดยใช้แคชเอาต์พุต คุณสามารถกำหนดพารามิเตอร์เพื่อแคชหน้าเว็บของคุณ นี่คือตัวอย่างง่ายๆ:

<%@ OutputCache Duration="600" VaryByParam="*" %>
  • Duration: การตั้งค่านี้ระบุว่าแคชหน้านั้นจะถูกเก็บไว้เป็นระยะเวลานานเพียงใด (เป็นวินาที)—ในกรณีนี้คือ 600 วินาที (หรือ 10 นาที)
  • VaryByParam: ตัวเลือกนี้ช่วยให้แตกต่างตามพารามิเตอร์ของ Query String ทำให้แน่ใจว่ามีเนื้อหาที่แตกต่างกันสามารถแคชได้อย่างมีประสิทธิภาพ

ทำไมต้องล้างแคชหลังจากความคิดเห็น?

เมื่อผู้ใช้โพสต์ความคิดเห็น คุณต้องการให้ผู้เยี่ยมชมคนอื่นเห็นความคิดเห็นเหล่านี้ทันที หากหน้าเว็บยังคงถูกแคชตามระยะเวลาที่กำหนด เนื้อหาใหม่จะไม่ปรากฏจนกว่าแคชจะหมดอายุ ดังนั้น การล้างแคช ระหว่างเหตุการณ์บางอย่าง (เช่นความคิดเห็นใหม่) จึงมีความจำเป็นเพื่อรักษาการโต้ตอบของเนื้อหาที่มีความเป็นพลศาสตร์

ทางแก้ไข: การล้างแคชด้วยตนเอง

เพื่อที่จะล้างแคชเอาต์พุตใน ASP.NET เมื่อมีการทำความคิดเห็น คุณสามารถใช้วิธี HttpResponse.RemoveOutputCacheItem คำสั่งนี้จะช่วยให้คุณระบุได้ว่าจะลบรายการแคชใด นี่คือวิธีการทำในโค้ด:

HttpResponse.RemoveOutputCacheItem("/caching/CacheForever.aspx");

การดำเนินการทีละขั้นตอน

  1. ระบุเส้นทางแคช: ตรวจสอบให้แน่ใจว่าคุณรู้เส้นทางที่แน่นอนของรายการแคชที่ต้องการลบ ซึ่งควรตรงกับเส้นทางที่ร้องขอเมื่อทำงานกับแคชเอาต์พุต

  2. ใส่โค้ดล้างแคช: รวมโค้ดสำหรับล้างแคชในตัวจัดการเหตุการณ์ที่ทำงานเมื่อความคิดเห็นถูกเพิ่มสำเร็จ ตัวอย่างเช่น:

    protected void OnCommentPosted(object sender, EventArgs e) 
    {
        // โค้ดของคุณสำหรับการบันทึกความคิดเห็น
        // ...
    
        // ล้างแคชเอาต์พุต
        HttpResponse.RemoveOutputCacheItem("/caching/CacheForever.aspx");
    }
    
  3. ทดสอบการดำเนินการ: หลังจากการนำหลักการล้างแคชมาใช้แล้ว ให้ทดสอบอย่างละเอียดเพื่อให้แน่ใจว่าความคิดเห็นใหม่จะแสดงทันทีหลังจากส่ง โดยไม่จำเป็นต้องให้ผู้ใช้รีเฟรชหน้าเอง

สรุป

แคชเอาต์พุตสามารถปรับปรุงประสิทธิภาพของแอปพลิเคชัน ASP.NET ของคุณได้อย่างมาก แต่ก็อาจนำมาซึ่งความท้าทายเมื่อคุณต้องการแสดงเนื้อหาที่สร้างโดยผู้ใช้ทันที เช่น ความคิดเห็น โดยการรวมคำสั่งง่ายๆ เพื่อทำการล้างแคชเมื่อมีการโพสต์ความคิดเห็น คุณสามารถทำให้แน่ใจว่าแอปพลิเคชันเว็บของคุณเป็นทั้ง มีประสิทธิภาพ และ มีพลศาสตร์

หากคุณปฏิบัติตามขั้นตอนที่ระบุในบล็อกนี้ การจัดการแคชเอาต์พุตพร้อมกับการให้ประสบการณ์ผู้ใช้ที่ราบรื่นก็จะง่ายขึ้นมาก อย่าลังเลที่จะติดต่อหากคุณมีคำถามใดๆ หรือจำเป็นต้องให้รายละเอียดเพิ่มเติมในขั้นตอนใดๆ!