การปรับเปลี่ยนที่จำเป็นสำหรับการใช้น้ำยาเคลือบเงาบน Magento CE


14

ฉันกำลังดิ้นรนเพื่อหาตัวอย่างการทำงานที่ดีในสิ่งที่จำเป็นต้องมีการแก้ไขเพื่อให้วานิชแคชเว็บไซต์วีโอไอพี

โดยหลักการแล้วฉันต้องการรายการงานเช่นสิ่งที่ต้องปิดการใช้งาน / เปิดใช้งานและตำแหน่งที่จะมองหา นอกจากนี้ยังเป็นการดีที่จะมี Varnish config ที่การเปลี่ยนแปลงเหล่านั้นได้รับการออกแบบให้ทำงานร่วมกับ

คู่มือการใช้งานวีโอไอพีพูดถึง Varnish เป็นอย่างมากดังนั้นฉันจึงรู้ว่ามันเคยทำมาก่อน แต่มันไม่ได้อธิบายวิธีการใช้งานจริง

คำตอบ:


2

พวกเขามีโมดูลอย่างเป็นทางการที่ถูกต้องที่นี่ มันรวมทุกอย่างที่คุณต้องการ (วานิช config, โมดูล, ... )


19

น้ำยาเคลือบเงาเหมาะสำหรับคุณหรือไม่?

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

ที่จริงแล้วการใช้น้ำยาวานิชควรเป็นการปรับเปลี่ยนประสิทธิภาพครั้งสุดท้ายในร้านของคุณ วางในครั้งเดียวที่คุณเห็นเวลาโหลดหน้าเว็บเท่านั้น Magento สามารถแสดงผลได้โดยไม่ต้องโหลด (เช่น <โหลดหน้า 600ms ครั้ง)

ร้านค้าของคุณยังต้องรวดเร็ว

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

a) TTLs ของคุณสูงมากซึ่งการค้นหาจาก 4 วันที่ผ่านมายังคงใช้ได้ในวันนี้
b)การก้าวเท้าบนไซต์มีมากมายจน URL นั้นบรรจุในเวลาอันสั้น

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

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

เนื้อหาสดหรืออัตราการเข้าชมที่สูงขึ้น

วานิช Hit Rate
รูปภาพมารยาทของmagestack.com

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

หากคุณมีเว็บไซต์ที่ยุ่ง - อัตราต่อรองคือคุณสามารถหนีไปได้ด้วย TTL ที่ต่ำกว่าและยังมีอัตราการเข้าชมวานิชสูงและยังคงมี TTL ต่ำต่อไปดังนั้นเนื้อหาที่สดกว่า ดังนั้นการเปลี่ยนแปลงสต็อค / ราคาของคุณจะสะท้อนให้เห็นอย่างรวดเร็วและแคชถูกเตรียมไว้อย่างต่อเนื่องจากปริมาณการก้าวเท้า

หากคุณมีไซต์ที่มีปริมาณการใช้งานต่ำคุณจะต้องทำการประนีประนอม เพิ่ม TTL ของคุณเพื่อให้แน่ใจว่ามีอัตราการเข้าชมสูงกว่า - หรือมีเนื้อหาที่ทันสมัย คุณไม่มีทั้งคู่เลยทีเดียว ใช่คุณสามารถเรียกใช้เครื่องมือการรวบรวมข้อมูล / สไปเดอร์อย่างต่อเนื่อง - แต่ทรัพยากรที่จะใช้และปริมาณที่แท้จริงหรือ URL ที่สามารถรวบรวมข้อมูลได้ (โดยปกติจะอยู่ในร้านค้าขนาดเล็กจำนวนนับหมื่น) หมายความว่าไม่มีประสิทธิภาพ ดังนั้นโดยปกติร้านค้าขนาดเล็กจะได้รับประโยชน์เพิ่มเติมจากส่วนขยาย FPC ที่ดีและมีการกำหนดค่าเซิร์ฟเวอร์ที่เหมาะสมที่สุด

แต่แน่นอนฉันสามารถใช้ Varnish แม้ว่าผู้ใช้จะเข้าสู่ระบบแคชต่อ ESOP หรือ ESI คืออะไร?

ESIS

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

ทุกครั้งที่มีการโหลดไฟล์วีโอไอพีมันจะมีค่าปรับประมาณ 200 มิลลิวินาที - ก่อนที่มันจะโหลดคอลเลกชัน / วาทกรรมบล็อก ฯลฯ ดังนั้นหากคุณมี ESIs มากกว่า 3 เท่าอัตราต่อรองก็คือคุณได้จบลงด้วย เวลาในการโหลดหน้าเว็บช้าลงโดยใช้ Varnish + ESIs สำหรับเนื้อหาแบบไดนามิกมากกว่าเพียงแค่ข้าม Varnish และส่งคำขอโดยตรงไปยัง Magento

ดังนั้นในการใช้งาน ESI อย่างมีประสิทธิภาพคุณจะต้องสามารถรวมคำขอหลาย ๆ รายการไว้ในคำขอเดียว

ตัวอย่างเช่นหน้ามุมมองหมวดหมู่ที่แสดงผลิตภัณฑ์ 20 รายการจำเป็นต้องแสดงระดับสต็อกที่ถูกต้อง ดังนั้นคุณใช้ ESI สำหรับแต่ละบล็อกในหน้า นั่นจะเป็นการร้องขอสต็อค 20x ของ ESI ในขณะที่คำขอสินค้ามีน้ำหนักเบามากการเรียกใช้ 20 เท่าพร้อมกันจะทำให้ประสิทธิภาพการทำงานแย่ลง ดังนั้นคุณสามารถให้บริการบล็อก / คอลเลกชันทั้งหมด 20 ผลิตภัณฑ์และรับคำขอ 1x ที่ แต่การโหลดและการแสดงคอลเลกชันอาจเป็นองค์ประกอบที่ช้าที่สุดในหน้าเว็บดังนั้นคุณจึงไม่ได้รับมากนัก

การใช้ ESI จำเป็นต้องมีการวางแผนและดำเนินการอย่างเหมาะสมหรือคุณมีไซต์ที่ช้ากว่าการไม่ใช้สารเคลือบเงาเลย

แคชต่อผู้ใช้

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

ตัวอย่างเช่นหากคุณจัดสรร 1GB ให้วานิช ด้วยไซต์ทั่วไปที่ผู้ใช้ดู 8 หน้าต่อการเข้าชมโดยเฉลี่ย 6 หน้านั้นจะไม่ซ้ำกัน นั่นคือ 28 ผู้เข้าชมต่อพื้นที่เก็บข้อมูล 1MB จากนั้นให้คำนึงถึงรูปภาพของคุณ CSS และ JS - สิ่งเหล่านี้ (ขอบคุณ) จะเป็นเรื่องปกติ แต่อาจจะยังคงมีพื้นที่เก็บข้อมูลที่ดีของคุณอยู่ที่ 7-800MB ทำให้คุณมีพื้นที่เก็บข้อมูลเหลือ 200MB แคชเพียงพอสำหรับผู้เยี่ยมชม 5,600 ราย

ฉันไม่สนใจฉันแค่ต้องการวานิช

โอเคคุณต้องทำสิ่งต่อไปนี้:

  1. ติดตั้ง SSL terminator เพื่อนั่งหน้าวานิช (เช่น stud / pound / nginx)
  2. ติดตั้ง Varnish บนเซิร์ฟเวอร์
  3. ให้แน่ใจว่าคุณกำหนดค่าX-Forwarded-Forอย่างถูกต้อง
  4. ติดตั้งโมดูลวานิชที่ร้านค้าของคุณ
  5. ตั้งค่า VCL Vishish ของคุณเพื่อไม่รวมส่วนขยายของบุคคลที่สาม

เนื่องจาก 3 คะแนนแรกนั้นอยู่นอกเหนือขอบเขตของคำตอบนี้ฉันจะปล่อยให้ตัวคุณจัดการเอง จุดที่ 4 คือบทละครของเด็กและจุดที่ 5 - อ่านต่อ

สิ่งที่สำคัญที่สุดเกี่ยวกับการใช้งานวานิชคือการทำให้แน่ใจว่าคุณจะไม่แคชเนื้อหาที่ไม่ควรถูกแคช

เช่น.

  • เกตเวย์การชำระเงินโทรกลับ
  • ภาพรวมของรถเข็น
  • ลูกค้าภาพรวมบัญชีของฉัน
  • ชำระเงิน (และการโทร Ajax ที่เกี่ยวข้อง)

เป็นต้น

สำหรับ URL ของวีโอไอพีหลักมีรายการ URIs มาตรฐานที่คุณสามารถหลบหนีได้ในวานิช:

admin|checkout|customer|catalog/product_compare|wishlist|paypal

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

ตามกฎแล้วเมื่อใดก็ตามที่เรากำหนดค่าวานิชเราจะเริ่มต้นด้วยการระบุเส้นทางเราเตอร์และเนมสเปซที่เกี่ยวข้องที่พวกเขาอาจครอบครองและไปจากที่นั่น เราทำสิ่งนี้ผ่าน SSH:

grep -Eiroh "<frontName>.*</frontName>" community | sed "s/<frontName>//gI;s#</frontName>##gI" | sort -u
grep -A10 -ir "<rewrite>" community | grep "<from>"
grep -A5 -ir "<routers>" community 
grep -Eiroh "<frontName>.*</frontName>" local | sed "s/<frontName>//gI;s#</frontName>##gI" | sort -u
grep -A10 -ir "<rewrite>" local | grep "<from>"
grep -A5 -ir "<routers>" local 

สิ่งนี้จะไม่ให้รายการ URL ที่ชัดเจน แต่จะให้คุณเริ่มต้นแน่นอน

เราไม่สามารถเน้นความสำคัญว่าจะไม่แคชเนื้อหาที่ไม่ควรแคช ผลลัพธ์อาจเป็นหายนะ

สรุป

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


@SimonJGreen หากคุณมีความสุขกับคำตอบอย่าลืมทำเครื่องหมายว่าเป็นที่ยอมรับ เบต้าต้องการคำตอบที่เป็นที่ยอมรับมากขึ้นสำหรับบัณฑิต
Ben Lessani - Sonassi

ขอบคุณสำหรับคำตอบ. แต่สิ่งที่เกี่ยวกับขั้นตอน 'กำหนดค่า apache และวานิช'? เพียง 'ติดตั้งวานิช' ไม่เพียงพอ
Yaroslav Rogoza

ประเด็นของฉันคือคุณไม่ควรพิจารณาวาร์นิชเป็นวิธีแก้ปัญหาตั้งแต่แรก วานิชคือการทำให้เว็บไซต์ได้อย่างรวดเร็วใช้ทรัพยากรน้อยไม่ไซต์ช้าอย่างรวดเร็ว คนส่วนใหญ่ใช้งานด้วยเหตุผลที่ผิด ไม่ต้องพูดถึงว่าการกำหนดค่าที่เหมาะสมไม่ใช่ขนาดที่เหมาะกับทุกคน คุณต้องคำนึงถึงว่ามันเหมาะสมกับภาพรวมของโครงสร้างพื้นฐานขนาดใหญ่อย่างไรมันจะโต้ตอบกับตัวยกเลิก SSL ของคุณอย่างไรคุณจัดการสมดุลภาระโหลดนิยาม TTL และการยกเว้นของคุณคืออะไร มันไม่จำเป็นสำหรับไซต์ที่มีการเข้าชมต่ำ แต่พวกเขาไม่มีทางที่จะทำให้มันดีขึ้นได้
Ben Lessani - Sonassi

สำหรับทุกคนที่ใช้ Mac โดยใช้คำสั่งการค้นหาของ Ben โปรดสังเกตว่ารุ่น OSX ของ sed จำเป็นต้องมีการตั้งค่าสถานะที่แตกต่างกัน หากคุณติดตั้ง gnu-sed ก็จะทำงานตามที่แสดงไว้ที่นี่
benz001
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.