การล้างแคชหน้าใน 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");
การดำเนินการทีละขั้นตอน
-
ระบุเส้นทางแคช: ตรวจสอบให้แน่ใจว่าคุณรู้เส้นทางที่แน่นอนของรายการแคชที่ต้องการลบ ซึ่งควรตรงกับเส้นทางที่ร้องขอเมื่อทำงานกับแคชเอาต์พุต
-
ใส่โค้ดล้างแคช: รวมโค้ดสำหรับล้างแคชในตัวจัดการเหตุการณ์ที่ทำงานเมื่อความคิดเห็นถูกเพิ่มสำเร็จ ตัวอย่างเช่น:
protected void OnCommentPosted(object sender, EventArgs e) { // โค้ดของคุณสำหรับการบันทึกความคิดเห็น // ... // ล้างแคชเอาต์พุต HttpResponse.RemoveOutputCacheItem("/caching/CacheForever.aspx"); }
-
ทดสอบการดำเนินการ: หลังจากการนำหลักการล้างแคชมาใช้แล้ว ให้ทดสอบอย่างละเอียดเพื่อให้แน่ใจว่าความคิดเห็นใหม่จะแสดงทันทีหลังจากส่ง โดยไม่จำเป็นต้องให้ผู้ใช้รีเฟรชหน้าเอง
สรุป
แคชเอาต์พุตสามารถปรับปรุงประสิทธิภาพของแอปพลิเคชัน ASP.NET ของคุณได้อย่างมาก แต่ก็อาจนำมาซึ่งความท้าทายเมื่อคุณต้องการแสดงเนื้อหาที่สร้างโดยผู้ใช้ทันที เช่น ความคิดเห็น โดยการรวมคำสั่งง่ายๆ เพื่อทำการล้างแคชเมื่อมีการโพสต์ความคิดเห็น คุณสามารถทำให้แน่ใจว่าแอปพลิเคชันเว็บของคุณเป็นทั้ง มีประสิทธิภาพ และ มีพลศาสตร์
หากคุณปฏิบัติตามขั้นตอนที่ระบุในบล็อกนี้ การจัดการแคชเอาต์พุตพร้อมกับการให้ประสบการณ์ผู้ใช้ที่ราบรื่นก็จะง่ายขึ้นมาก อย่าลังเลที่จะติดต่อหากคุณมีคำถามใดๆ หรือจำเป็นต้องให้รายละเอียดเพิ่มเติมในขั้นตอนใดๆ!