การแคชแบบเต็มหน้า – Need For Speed
เผยแพร่แล้ว: 2020-10-02
การแคชเว็บไซต์และการแคชแบบเต็มหน้าเป็นเทคนิคในการเพิ่มความเร็วในการโหลดเว็บไซต์ เป็นวิธีปฏิบัติทั่วไปที่ใช้กันเกือบทุกที่ เนื่องจากได้รับผลประโยชน์มหาศาลจากประสิทธิภาพของเว็บไซต์ การแคชทำงานโดยทำให้เว็บเซิร์ฟเวอร์ทำงานได้อย่างมีประสิทธิภาพมากขึ้น การแคชแบบเต็มหน้าเป็นรูปแบบการแคชขั้นสูง ดังนั้นเพื่อให้เข้าใจถึงการแคชแบบเต็มหน้า มาเริ่มด้วยการแคชปกติและสร้างจากที่นั่น
Joe's Auto-Parts Shop – A Static Web Site

ลองนึกภาพโจ เขาเป็นคนที่เป็นเจ้าของและดูแลโกดังขนาดใหญ่ซึ่งเต็มไปด้วยอะไหล่รถยนต์ ที่ด้านหน้าโกดังจะมีเคาน์เตอร์ให้ลูกค้ามาซื้ออะไหล่ เมื่อลูกค้ามาถึงเพื่อซื้อบางส่วน ธุรกรรมจะทำตามขั้นตอนนี้:
- ลูกค้ามอบรายการอะไหล่รถยนต์ให้โจ
 - โจดึงส่วนที่ 1 มาวางบนเคาน์เตอร์
 - โจดึงส่วนที่ 2 มาวางบนเคาน์เตอร์
 - และอื่นๆ จนจบรายการ
 - ลูกค้าจ่ายเงินแล้วออก
 
วิธีนี้ใช้กับเว็บไซต์แบบคงที่ได้อย่างไร
เว็บไซต์แบบสแตติกคือเว็บไซต์ที่ไม่ใช้ฐานข้อมูล สคริปต์ PHP หรือโปรแกรมอื่นๆ ลองนึกถึงเว็บไซต์ธรรมดาๆ ที่มีแต่หน้า HTML และรูปภาพเท่านั้น โจและโกดังของเขาเป็นตัวแทนของส่วนต่างๆ ของเว็บไซต์ง่ายๆ ดังนี้:
- คลังสินค้าเป็นเซิร์ฟเวอร์จริง
 - Joe เป็นซอฟต์แวร์เว็บเซิร์ฟเวอร์ เช่น Apache
 - ชิ้นส่วนรถยนต์คือไฟล์ที่ประกอบขึ้นเป็นเว็บไซต์ เช่น รูปภาพและไฟล์ HTML
 
ขั้นตอนการให้บริการเว็บไซต์ง่ายๆ นี้คือ:
- เบราว์เซอร์ร้องขอหน้าเว็บจาก Apache ที่ทำงานบนเซิร์ฟเวอร์
 - Apache อ่านไฟล์ที่ 1 จากดิสก์และส่งไปยังเบราว์เซอร์
 - Apache อ่านไฟล์ที่ 2 จากดิสก์และส่งไปยังเบราว์เซอร์
 - ไปเรื่อยๆจนได้ของครบ
 - เบราว์เซอร์แสดงหน้าเว็บที่เสร็จสมบูรณ์
 
การตั้งค่านี้ใช้งานได้ดีสำหรับเว็บไซต์ขนาดเล็ก แต่ล้มเหลวอย่างรวดเร็วภายใต้แรงกดดัน
Joe Gets Busy – การแคชบันทึกวัน

ระบบของโจทำงานได้ดีจนเขาเริ่มยุ่ง ยุ่งมากที่เขาใช้เวลาส่วนใหญ่ในการเดินจากเคาน์เตอร์และเข้าไปในโกดัง จนเขาไม่สามารถตามทันลูกค้าใหม่ทั้งหมดได้
โจสามารถซื้อโกดังเพิ่มและจ้างคนอื่นมาทำงานที่นั่นเพื่อตอบสนองความต้องการที่เพิ่มขึ้นได้ แต่สิ่งนี้มีค่าใช้จ่ายสูงและไม่ได้เพิ่มทรัพยากรที่เขามีอยู่แล้วให้เกิดประโยชน์สูงสุด โจคิดเกี่ยวกับวิธีที่เขาจะทำให้กระบวนการของเขามีประสิทธิภาพมากขึ้นในคลังสินค้าที่เขามีอยู่
โจตระหนักดีว่า 90% ของชิ้นส่วนที่เขาดึงให้ลูกค้าคือหนึ่งใน 10 ชิ้นเท่านั้น ดังนั้นเขาจึงตัดสินใจเก็บ 10 ส่วนนั้นไว้ใต้เคาน์เตอร์เพื่อที่เขาจะได้หยิบขึ้นมาทันทีเมื่อมีคนถามหา ตอนนี้เขาสามารถให้บริการตามคำขอของลูกค้าส่วนใหญ่ได้โดยตรงจากเคาน์เตอร์โดยไม่ต้องเดินทางไปที่คลังสินค้า นี่เร็วกว่ามาก
การแคชทำสิ่งที่คล้ายกันมากบนเว็บเซิร์ฟเวอร์ เช่นเดียวกับที่โจเดินกลับเข้าไปในโกดัง การดำเนินการที่ช้าที่สุดเมื่อให้บริการไฟล์สแตติกคือการโหลดไฟล์จากอุปกรณ์จัดเก็บข้อมูล สิ่งที่แคชทำคือเก็บไฟล์ที่ร้องขอบ่อยที่สุดใน RAM ซึ่งสามารถเข้าถึงได้เร็วกว่าการอ่านจากที่เก็บข้อมูลหลายพันเท่า

การแคชประเภทนี้ใช้งานได้ดีกับรูปภาพและไฟล์สแตติกอื่น ๆ แต่ WordPress เป็นเว็บไซต์แบบไดนามิกที่มีสคริปต์ PHP และฐานข้อมูล
ป้อนแคชแบบเต็มหน้า
ชีวิตของ Joe นั้นซับซ้อน – PHP, ฐานข้อมูล และการแคช

เวิร์กช็อปโตโยต้าแห่งใหม่จะเปิดขึ้นในเมืองเดียวกับโจ และพวกเขาใช้โจในการจัดหาชิ้นส่วนอะไหล่ นี่เป็นสิ่งที่ดีสำหรับ Joe ยกเว้นปัญหาหนึ่งข้อคือ Toyota สั่งซื้อชิ้นส่วนตามหมายเลขชิ้นส่วนของ Toyota เท่านั้น พวกเขาให้แคตตาล็อกขนาดใหญ่แก่ Joe เพื่อให้เขาสามารถค้นหาหมายเลขชิ้นส่วนของโตโยต้าและจับคู่กับชิ้นส่วนในคลังสินค้าของเขาเมื่อใดก็ตามที่เขาได้รับคำสั่งซื้อจากพวกเขา
แต่สิ่งนี้ทำให้โจช้าลงอีกครั้ง
ทุกครั้งที่เขาต้องค้นหาชิ้นส่วนโตโยต้าในแค็ตตาล็อก มันใช้เวลานาน แม้ว่าจะเป็นหนึ่งในชิ้นส่วนใต้เคาน์เตอร์ เขาก็เอื้อมไม่ถึงเพราะต้องค้นหาหมายเลขชิ้นส่วนของโตโยต้าในแค็ตตาล็อกก่อน ระบบเก่าของเขาในการเก็บรักษา 10 ส่วนที่ร้องขอมากที่สุดไว้ใต้เคาน์เตอร์ยังคงช่วย แต่การค้นหาแคตตาล็อกใหม่ตอนนี้กลายเป็นปัญหาคอขวดครั้งใหญ่
โจคิดเกี่ยวกับเรื่องนี้อีกครั้งและคิดหาทางแก้ไข เขาสังเกตเห็นว่าคำสั่งซื้อส่วนใหญ่ของโตโยต้าเป็นเพียงกลุ่มเล็กๆ เท่านั้น ดังนั้นเขาจึงเขียนตารางสรุปหมายเลขชิ้นส่วนของโตโยต้าที่พบบ่อยที่สุดและชิ้นส่วนที่เกี่ยวข้อง จากนั้นเขาก็แปะเทปไว้บนเคาน์เตอร์
ตอนนี้เขาไม่จำเป็นต้องใช้แคตตาล็อกสำหรับคำสั่งซื้อของ Toyota ส่วนใหญ่ เขาสามารถดูเอกสารสรุปข้อมูลและแปลงหมายเลขชิ้นส่วนของ Toyota ให้กลายเป็นชิ้นส่วนที่เขาหยิบได้แทบจะในทันที
ไซต์ WordPress มีปัญหาคล้ายกับ Joe WordPress สร้างทุกหน้าเว็บเมื่อเบราว์เซอร์ร้องขอ หน้า HTML ที่เบราว์เซอร์ของคุณโหลดไม่มีอยู่จนกว่าคุณจะถาม WordPress
นี่คือวิธีที่ WordPress สร้างหน้าในเว็บไซต์ของคุณ:
- เบราว์เซอร์ร้องขอหน้าเว็บจาก WordPress
 - สคริปต์ PHP ยอมรับคำขอและค้นหาฐานข้อมูลสำหรับสิ่งที่จำเป็นในการสร้างหน้า
 - ฐานข้อมูลค้นหาและส่งคืนข้อมูลทั้งหมดไปยังกระบวนการ PHP
 - สคริปต์ PHP สร้างหน้าด้วยข้อมูลนั้นและส่งไปยังเบราว์เซอร์
 
นี่เป็นงานหนักและเป็นเหตุผลที่เว็บไซต์ WordPress ที่ไม่ได้แคชต้องการทรัพยากรคอมพิวเตอร์มากกว่าเว็บไซต์แบบคงที่หลายเท่า
เช่นเดียวกับ Joe ไซต์ WordPress ของคุณได้รับคำขอสำหรับหน้าเดียวกันบ่อยครั้งมาก เช่น หน้า Landing Page สำหรับไซต์ของคุณ เนื่องจากหน้านี้ได้รับบริการทุกครั้งที่มีผู้เข้าชมใหม่เข้ามา ในการตั้งค่าที่ไม่ใช่แคช WordPress ต้องประมวลผลคำขอนี้ด้วยสคริปต์ PHP และทำการสืบค้นฐานข้อมูลสำหรับผู้เยี่ยมชมทุกคน แม้ว่ามันจะสร้างหน้า เดียวกัน ทุกครั้ง
ทำให้มีงานซ้ำซ้อนมากมาย
การแคชแบบเต็มหน้าช่วยแก้ปัญหานี้ได้ สังเกตว่าคำขอบางอย่างและเพจที่สร้างขึ้นจะเหมือนกันเสมอดังนั้นจึงแคชสำเนาของเพจใน RAM นอกจากนี้ยังเก็บเอกสารโกงของคำขอที่สร้างหน้าเหล่านั้นไว้ ดังนั้นเมื่อผู้เยี่ยมชมร้องขอหน้าที่สร้างก่อนที่จะให้บริการโดยตรงจาก RAM แทนที่จะสร้างใหม่
ซึ่งช่วยลดภาระงานของเว็บเซิร์ฟเวอร์ได้อย่างมากโดยการข้ามกระบวนการ PHP และการค้นหาฐานข้อมูลจำนวนมาก และให้บริการหน้าเว็บที่สร้างก่อนหน้านี้โดยตรงจาก RAM สิ่งนี้จะทำให้คุณมีเว็บไซต์ WordPress แบบไดนามิกที่เกือบจะมีประสิทธิภาพเท่ากับเว็บไซต์แบบคงที่
การแคชและการแคชแบบเต็มหน้าเป็นเทคโนโลยีที่ยอดเยี่ยมที่ใช้ประโยชน์จากทรัพยากรของเว็บเซิร์ฟเวอร์ของคุณเพื่อเพิ่มประสิทธิภาพสูงสุดของเว็บเซิร์ฟเวอร์ของคุณและมอบไซต์ WordPress ที่รวดเร็ว
