การแคชเบราว์เซอร์ที่เรียกว่าหมายความว่าเมื่อคุณเข้าถึงเว็บเพจเป็นครั้งแรกเบราว์เซอร์จะแคชหน้าเว็บเหล่านี้ในพื้นที่ เมื่อคุณเข้าถึงหน้าเว็บแคชเหล่านี้ในครั้งต่อไปเบราว์เซอร์จะอ่านเนื้อหาของหน้าเว็บเหล่านี้โดยตรงจากพื้นที่ท้องถิ่นโดยไม่ต้องได้รับจากเครือข่าย
แม้ว่าฟังก์ชั่นการแคชที่ได้รับจากเบราว์เซอร์สามารถปรับปรุงความเร็วในการโหลดของหน้าเว็บได้อย่างมีประสิทธิภาพสำหรับเว็บเพจบางหน้าที่ต้องมีการอัปเดตแบบเรียลไทม์กลไกการแคชนี้จะส่งผลต่อการแสดงหน้าเว็บปกติ โชคดีที่มีสามฟิลด์ในส่วนหัวข้อความตอบกลับ HTTP เพื่อปิดฟังก์ชั่นแคชของเบราว์เซอร์ไคลเอนต์ สามข้อความต่อไปนี้ใช้สามฟิลด์นี้เพื่อปิดแคชของเบราว์เซอร์:
Response.setDateHeader ("Expires", 0); Response.Setheader ("แคชควบคุม", "ไม่มีแคช"); Response.Setheader ("Pragma", "No-cache");แม้ว่าฟิลด์ส่วนหัวของข้อความตอบกลับ HTTP สามช่องด้านบนสามารถปิดแคชเบราว์เซอร์ได้ อย่างไรก็ตามเบราว์เซอร์ทั้งหมดไม่สนับสนุนฟิลด์ส่วนหัวข้อความตอบกลับทั้งสามนี้ดังนั้นจึงเป็นการดีที่สุดที่จะใช้ฟิลด์ส่วนหัวข้อความตอบกลับสามช่องด้านบนเพื่อปิดแคชของเบราว์เซอร์
ตัวอย่าง: ปิดการใช้งานเบราว์เซอร์จากหน้าเว็บปัจจุบันแคช
1. ตัวอย่างคำอธิบาย
โปรแกรมนี้แสดงให้เห็นถึงประสิทธิภาพเมื่อส่งข้อความร้องขอผ่านแบบฟอร์มเมื่อแคชเบราว์เซอร์ไม่ปิดและปิดแคชเบราว์เซอร์
2. เขียนคลาสแคช
แคชเบราว์เซอร์ถูกปิดโดยใช้ฟิลด์ส่วนหัวข้อความตอบกลับสามช่องด้านบนในคลาสแคชและส่งออกรหัส HTML ชิ้นหนึ่งไปยังไคลเอนต์เพื่อทดสอบผลของการปิดแคชและไม่ปิดแคช รหัสการใช้งานของคลาสแคชมีดังนี้:
แคชระดับสาธารณะขยาย httpservlet {บริการโมฆะสาธารณะ (คำขอ httpservletrequest, การตอบสนอง httpservletResponse) พ่น servletexception, ioexception {response.setContentType ("ข้อความ/html; charset = utf-8"); String cache = request.getParameter ("cache"); if (cache! = null) {if (cache.equals ("false")) {// ปิดการตอบสนองแคชเบราว์เซอร์ SetDateHeader ("หมดอายุ", 0); Response.Setheader ("แคชควบคุม", "ไม่มีแคช"); Response.Setheader ("Pragma", "No-cache"); }} // กำหนดสตริงรหัส html html = "<ฟอร์ม id = 'ฟอร์ม', action = 'test' method = 'post'>" + "ชื่อ: <อินพุต type = 'text' name = 'ชื่อ'/>" + "<อินพุตประเภท = 'ส่ง' value = 'ส่ง'/>" + " PrintWriter out = response.getWriter (); out.println (html); // เอาต์พุตรหัส HTML ไปยังไคลเอนต์}}ดังที่เห็นได้จากรหัสด้านบนแคชของเบราว์เซอร์จะปิดเมื่อค่าพารามิเตอร์คำขอแคชเป็นเท็จ
3. กำหนดค่าคลาสแคช
รหัสการกำหนดค่าของคลาสแคชมีดังนี้:
<servlet> <servlet-name> แคช </servlet-name> <servlet-class> บทที่ 5.cache </servlet-class> </servlet> <servlet-mapping> <servlet-name> แคช </servlet-name> <url-pattern>/cache </url-pattern>
4. ทดสอบสถานการณ์ที่แคชเบราว์เซอร์ไม่ปิด
ป้อน URL ต่อไปนี้ในแถบที่อยู่เบราว์เซอร์:
http: // localhost: 8080/demo/cache? cache = true
ป้อนสตริงใด ๆ ในกล่องข้อความ [ชื่อ] และคลิกปุ่ม [ส่ง] ในเวลานี้เบราว์เซอร์จะแสดงข้อยกเว้น (ข้อยกเว้นนี้เกิดจากการทดสอบที่ส่งมาซึ่งไม่มีอยู่ดังนั้นเราจึงไม่ต้องกังวลเกี่ยวกับมัน) จากนั้นคลิกปุ่มส่งคืนของเบราว์เซอร์เพื่อกลับไปที่หน้า เราจะเห็นว่าสตริงที่ป้อนยังคงมีอยู่ ซึ่งหมายความว่าเมื่อกลับมาเบราว์เซอร์จะไม่กลับมาใช้หน้าเว็บจากเซิร์ฟเวอร์ แต่โหลดหน้าปัจจุบันใหม่จากแคชท้องถิ่น
5. ทดสอบสถานการณ์การปิดเบราว์เซอร์แคช
ป้อน URL ต่อไปนี้ในแถบที่อยู่เบราว์เซอร์เพื่อปิดแคชเบราว์เซอร์:
http: // localhost: 8080/demo/cache? cache = false
ส่งและส่งคืนในขั้นตอนก่อนหน้าและพบว่าข้อมูลที่ป้อนตอนนี้หายไปแล้ว ซึ่งหมายความว่าหลังจากปิดแคชเบราว์เซอร์เบราว์เซอร์จะได้รับหน้าปัจจุบันจากเซิร์ฟเวอร์ทุกครั้งที่ส่งคืน ดังนั้นหน้าปัจจุบันจะรักษาค่าเริ่มต้นไว้เสมอ
6. ขั้นตอนสรุป
เมื่อปิดแคชเบราว์เซอร์เพื่อให้แน่ใจว่ามันมีประสิทธิภาพในเบราว์เซอร์ส่วนใหญ่มากที่สุดฉันขอแนะนำให้ใช้ฟิลด์ส่วนหัวข้อความตอบกลับ HTTP สามรายการด้านบนเพื่อปิดแคชเบราว์เซอร์ในเวลาเดียวกัน
สรุป
ข้างต้นเป็นวิธีการของ Javaweb ที่ห้ามไม่ให้เบราว์เซอร์จากแคชหน้าเว็บปัจจุบัน ฉันหวังว่ามันจะเป็นประโยชน์กับทุกคน หากคุณมีคำถามใด ๆ โปรดฝากข้อความถึงฉันและบรรณาธิการจะตอบกลับทุกคนในเวลา ขอบคุณมากสำหรับการสนับสนุนเว็บไซต์ Wulin.com!