Rocket-Nginx คือการกำหนดค่า Nginx สำหรับปลั๊กอินแคช WordPress WP Rocket ช่วยให้ Nginx ให้บริการไฟล์แคชก่อนหน้านี้โดยตรงโดยไม่ต้องเรียก WordPress หรือ PHP ใด ๆ นอกจากนี้ยังเพิ่มส่วนหัวให้กับแคช CSS, JS และสื่อเพื่อใช้ประโยชน์จากแคชของเบราว์เซอร์โดยลดการร้องขอไปยังเว็บเซิร์ฟเวอร์ของคุณ
คุณอาจถามตัวเองว่า: "การกำหนดค่านี้ดีแค่ไหน"
สมมติว่า WP Rocket ใช้บนเว็บไซต์ของตนเพื่อให้เร็วยิ่งขึ้น!
โครงการนี้ได้รับการสนับสนุนโดย SatelliteWP ซึ่งเป็นบริการบำรุงรักษา WordPress ซึ่งตั้งอยู่ใกล้กับเมืองมอนทรีออล ประเทศแคนาดา บริการของเรามีทั้งภาษาอังกฤษและภาษาฝรั่งเศส SatelliteWP เป็นส่วนหนึ่งของเว็บไซต์ WordPress
การกำหนดค่าถูกสร้างขึ้นโดย Maxime Jobin (@maximejobin) และขณะนี้ได้รับการดูแลโดย SatelliteWP
เนื่องจากเป้าหมายของการกำหนดค่าคือการให้บริการไฟล์แคชโดยตรงโดยไม่ต้องดำเนินการ PHP ใด ๆ จาก WordPress สิ่งนี้อาจทำให้งานที่กำหนดเวลาไว้ของคุณไม่ถูกเรียก ดังที่คุณอาจทราบแล้วว่างาน WP-Cron ไม่ใช่งาน cron จริง และจะดำเนินการเฉพาะเมื่อคุณเข้าชมไซต์ของคุณเท่านั้น
เพื่อให้แน่ใจว่างานที่กำหนดเวลาไว้ของคุณจะทำงานตามเวลาที่ควร ขอแนะนำอย่างยิ่งให้ปิดการใช้งาน WordPress cron และสร้างงาน cron จริง
หากต้องการปิดการใช้งาน WordPress cron ให้เพิ่มบรรทัดต่อไปนี้ใน wp-config.php
ของคุณ :
define( 'DISABLE_WP_CRON', true );
จากนั้น ให้ทำงาน cron ด้วยตนเองทุกๆ 15 นาที (ควรจะเพียงพอสำหรับเว็บไซต์ส่วนใหญ่):
*/15 * * * * wget -q -O - http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
หรือ
*/15 * * * * curl http://www.website.com/wp-cron.php?doing_wp_cron &>/dev/null
หรือ
*/15 * * * * cd /home/user/public_html; php wp-cron.php &>/dev/null
ตรวจสอบให้แน่ใจว่าคุณทดสอบว่างานของคุณยังคงทำงานอยู่หลังจากการเปลี่ยนแปลงนี้!
หากต้องการใช้สคริปต์ คุณต้องรวมไว้ในการกำหนดค่าจริงของคุณ หากเว็บไซต์ WordPress ของคุณยังไม่ได้กำหนดค่าให้ทำงานด้วย Nginx คุณสามารถตรวจสอบการกำหนดค่า Nginx สำหรับเอกสาร WordPress ได้
Rocket-Nginx เพียงอินสแตนซ์เดียวเท่านั้นที่จำเป็นสำหรับเว็บไซต์ WordPress ทั้งหมดของคุณที่ใช้ WP Rocket คุณสามารถสร้างไฟล์การกำหนดค่าได้มากเท่าที่ต้องการ
คุณสามารถสร้างโฟลเดอร์ไดเรกทอรี rocket-nginx
ในไดเรกทอรีการกำหนดค่า Nginx ของคุณได้ หากคุณใช้ Ubuntu การกำหนดค่า Nginx ของคุณ (nginx.conf) ควรอยู่ใน: /etc/nginx/
หากต้องการติดตั้ง คุณสามารถ:
cd /etc/nginx
git clone https://github.com/satellitewp/rocket-nginx.git
ตั้งแต่เวอร์ชัน 2.0 จะต้องสร้างการกำหนดค่า หากต้องการสร้างการกำหนดค่าเริ่มต้น คุณต้องเปลี่ยนชื่อไฟล์ ini ที่ปิดใช้งาน และเรียกใช้ตัวแยกวิเคราะห์การกำหนดค่า:
cd rocket-nginx
cp rocket-nginx.ini.disabled rocket-nginx.ini
php rocket-parser.php
สิ่งนี้จะสร้างการกำหนดค่า default.conf
ที่สามารถรวมไว้กับทุกเว็บไซต์ หากคุณต้องการเปลี่ยนการกำหนดค่าเริ่มต้น คุณสามารถแก้ไขไฟล์ ini และเพิ่มส่วนอื่นที่ด้านล่างของไฟล์ได้
จากนั้นในไฟล์การกำหนดค่า Nginx คุณต้องรวมการกำหนดค่าที่สร้างขึ้นด้วย หากการกำหนดค่าเว็บไซต์ของคุณอยู่ใน /etc/nginx/sites-available
คุณจะต้องแก้ไขการกำหนดค่าของคุณ:
server {
...
# Rocket-Nginx configuration
include rocket-nginx/conf.d/default.conf;
...
}
ก่อนที่คุณจะโหลดการกำหนดค่าของคุณอีกครั้ง ตรวจสอบให้แน่ใจว่าคุณได้ทดสอบแล้ว: nginx -t
เมื่อการทดสอบเสร็จสิ้น คุณต้องโหลดการกำหนดค่าของคุณใหม่ service nginx reload
แค่นั้นแหละ.
ไม่มีการกำหนดค่าให้ทำ มันจะทำงานนอกกรอบ แต่คุณสามารถแก้ไขได้สองสามอย่าง...
เพียงเปิดไฟล์ rocket-nginx.ini
และดูตัวเลือกทั้งหมดในนั้น
คุณสามารถเพิ่มส่วนใหม่ตามการกำหนดค่าเริ่มต้นดังนี้:
# This creates the new section and will generate a new configuration
[example.com : default]
# This will add a value to invalidate the cache with a cookie
cookie_invalidate[] = "my_custom_cookie"
เมื่อคุณแก้ไขไฟล์ ini คุณต้องสร้างไฟล์การกำหนดค่า Nginx ใหม่โดยการเรียกใช้ parser:
php rocket-parser.php
จากนั้นส่วนที่เพิ่มหรือแก้ไขใหม่จะสร้างไฟล์การกำหนดค่าการอัปเดต (*.conf)
สุดท้ายนี้ แต่ละครั้งที่ คุณสร้าง (หรือสร้างใหม่) ไฟล์การกำหนดค่า คุณจะต้อง:
ทดสอบเพื่อให้แน่ใจว่าไม่มีข้อผิดพลาดใดๆ:
nginx -t
โหลดการกำหนดค่าใหม่:
service nginx reload
ตั้งแต่เวอร์ชัน 3.0 เป็นต้นไป โฟลเดอร์ conf.d
จะถูกสร้างขึ้น สำหรับแต่ละโปรไฟล์ที่คุณสร้าง โฟลเดอร์ย่อยจะถูกสร้างขึ้นภายในโฟลเดอร์นั้น ในนั้นคุณสามารถสร้างไฟล์ที่จะรวมไว้ในไฟล์การกำหนดค่าที่สร้างขึ้นได้
คุณสามารถรวมไฟล์การกำหนดค่าในเวลาที่ต่างกันได้
ในโปรไฟล์เริ่มต้น ให้สร้างไฟล์ใน conf.d/default/
โดยมีรูปแบบชื่อไฟล์ดังต่อไปนี้ : start.*.conf
ในโปรไฟล์เริ่มต้น ให้สร้างไฟล์ใน conf.d/default/
โดยมีรูปแบบชื่อไฟล์ดังต่อไปนี้: global.*.conf
ในโปรไฟล์เริ่มต้น ให้สร้างไฟล์ใน conf.d/default/
โดยมีรูปแบบชื่อไฟล์ดังต่อไปนี้: http.*.conf
ในโปรไฟล์เริ่มต้น ให้สร้างไฟล์ใน conf.d/default/
โดยมีรูปแบบชื่อไฟล์ต่อไปนี้ : preprocess.*.conf
ในโปรไฟล์เริ่มต้น ให้สร้างไฟล์ใน conf.d/default/
โดยมีรูปแบบชื่อไฟล์ดังต่อไปนี้: css.*.conf
ในโปรไฟล์เริ่มต้น ให้สร้างไฟล์ใน conf.d/default/
โดยมีรูปแบบชื่อไฟล์ดังต่อไปนี้ : js.*.conf
ในโปรไฟล์เริ่มต้น ให้สร้างไฟล์ใน conf.d/default/
โดยมีรูปแบบชื่อไฟล์ต่อไปนี้: media.*.conf
คุณอาจต้องการตรวจสอบว่าไฟล์ของคุณให้บริการโดย Nginx โดยตรงหรือไม่และไม่ได้เรียก PHP ใด ๆ ในการทำเช่นนั้น ให้เปิดไฟล์ rocket-nginx.ini
และเปลี่ยนค่าดีบักจาก:
debug = false
ถึง:
debug = true
ส่วนหัวต่อไปนี้ปรากฏไม่ว่าจะตั้งค่าการดีบักเป็นจริงหรือเท็จ:
เหตุผลที่ไม่ให้บริการไฟล์แคช:
Rocket-Nginx สมบูรณ์แบบหรือไม่? ไม่มันไม่ใช่! เราพยายามทำให้มันสมบูรณ์แบบที่สุดเท่าที่จะเป็นไปได้ แต่ภาษาสคริปต์ของ Nginx ไม่ได้นำเสนอความเป็นไปได้ทั้งหมดในภาษาเช่น PHP เป็นต้น ดังนั้นจึงมีข้อจำกัดบางประการ
ทากที่เข้ารหัส
คำตอบสั้นๆ: Rocket-Nginx ไม่สามารถให้บริการทากที่เข้ารหัสได้
เนื่องจากข้อจำกัดด้านสคริปต์ของ Nginx ทากเช่น 'جزازة العشب' จะถูกเข้ารหัสและไฟล์ถูกจัดเก็บโดย WP Rocket เป็น '%d8%ac%d8%b2%d8%a7%d8%b2%d8%a9%20%d8%a7 %d9%84%d8%b9%d8%b4%d8%a8' (ตัวพิมพ์เล็ก) เบราว์เซอร์บางตัว เช่น Google Chrome จะส่งคำขอเป็น '%D8%AC%D8%B2%D8%A7%D8%B2%D8%A9%20%D8%A7%D9%84%D8%B9%D8% B4%D8%A8' (ตัวพิมพ์ใหญ่) เมื่อใช้ภาษาเช่น PHP การเปรียบเทียบสตริงเหล่านี้ให้เท่ากันจะเป็นเรื่องง่าย ด้วย Nginx สิ่งนี้เป็นไปไม่ได้เว้นแต่จำเป็นต้องใช้โมดูลของบุคคลที่สาม (เช่น Perl หรือ Lua) เพื่อให้ Rocket-Nginx เป็นแบบทั่วไปที่สุดเท่าที่จะเป็นไปได้ จึงตัดสินใจไม่เพิ่มการพึ่งพาโมดูล หากคุณต้องการรองรับทากที่เข้ารหัสและเพิ่มโค้ดที่หายไป โปรดทราบว่าเวอร์ชัน 3.1.0 (และใหม่กว่า) มีการกำหนดค่าใหม่ที่มีชื่อว่า "preprocess" เพื่อแก้ไขตัวพิมพ์ตัวแปร $rocket_uri_path
(บังคับตัวพิมพ์เล็ก)
ความเข้ากันได้ของเว็บพี
คำตอบสั้นๆ: Rocket-Nginx จะไม่ให้บริการไฟล์แคช WebP ที่สร้างโดย WP Rocket หากคุณเปิดใช้งานคุณสมบัติความเข้ากันได้ของ WebP
WP Rocket สามารถสร้างแคชเฉพาะได้หากคุณใช้เครื่องมือในการแปลงรูปภาพ (JPG, PNG, ... ) เป็น WebP น่าเสียดายที่ภาษาสคริปต์ของ Nginx ไม่มีประสิทธิภาพเพียงพอที่จะตรวจสอบความถูกต้องได้อย่างถูกต้อง ดังนั้น หากคุณเปิดใช้งานคุณสมบัตินี้ Rocket-Nginx จะให้ WP Rocket จัดการคำขอและให้บริการเพจแคชที่ถูกต้อง ขึ้นอยู่กับบริบท
Rocket-Nginx เข้ากันได้กับ BF Cache (แคชย้อนกลับ/ไปข้างหน้า) หรือไม่
ใช่! หากเว็บไซต์ของคุณไม่แสดงข้อมูลที่ละเอียดอ่อนและเหมาะสมสำหรับการแคชย้อนหลัง คุณต้องแก้ไขการกำหนดค่า Rocket-Nginx ของคุณโดยติดตามการสนทนา BF Cache ในประเด็นต่างๆ
ฉันจะอัปเกรดจากเวอร์ชัน 1 หรือ 2 เป็นเวอร์ชัน 3 ได้อย่างไร
เราขอแนะนำให้คุณบันทึกการกำหนดค่าก่อนหน้าและเริ่มต้นใหม่ ใช้โอกาสนี้ทบทวนทุกสิ่งเมื่อหลายสิ่งหลายอย่างเปลี่ยนแปลงไป อย่างเป็นทางการ เวอร์ชัน 3.x ไม่สามารถใช้งานร่วมกับเวอร์ชันก่อนหน้าได้ การเริ่มต้นใหม่ไม่ควรใช้เวลาเกิน 15 นาที
มีอะไรใหม่ในเวอร์ชัน 3.x?
หลายอย่าง!
คุณมีเกณฑ์มาตรฐานเกี่ยวกับโครงการหรือไม่?
ไม่ ผู้คนรักมาตรฐานมากพอๆ กับที่พวกเขาเกลียดพวกเขา การวัดประสิทธิภาพทั้งหมดมีคนอ้างว่า X หรือ Y หรือ Z สามารถทำได้เพื่อปรับปรุงผลลัพธ์ ในโปรเจ็กต์นี้ การวัดประสิทธิภาพจะขึ้นอยู่กับจำนวนปลั๊กอินที่คุณมีซึ่งส่งผลต่อเพจ แม้ว่าเอาต์พุตจะอยู่ในแคชก็ตาม (เช่น WP Rocket รัน PHP แม้ว่าไฟล์จะอยู่ในแคชก็ตาม) สิ่งที่เราสามารถพูดได้ก็คือ คุณจะเปลี่ยนจาก NGINX → PHP-FPM → WordPress (PHP และฐานข้อมูล) → ไฟล์แบบคง ที่เป็น NGINX → ไฟล์แบบคงที่ กล่าวอีกนัยหนึ่ง คุณกำลังให้บริการไฟล์คงที่โดยตรงจาก NGINX แทนที่จะส่งคำขอไปยัง FPM จากนั้นไปยัง PHP (สำหรับ WP Rocket... อย่างน้อย) ก่อนที่จะให้บริการไฟล์คงที่
Rocket-Nginx จะใช้งานได้หรือไม่หากเว็บไซต์ของฉันใช้ใบรับรอง SSL (https)
ใช่! Rocket-Nginx จะตรวจพบว่าคำขอนั้นทำผ่าน HTTP หรือ HTTPS และให้บริการไฟล์ที่ถูกต้องขึ้นอยู่กับประเภทคำขอ โปรโตคอลทั้งสองได้รับการจัดการโดยอัตโนมัติตั้งแต่เวอร์ชัน 1.0
เผยแพร่ภายใต้ใบอนุญาต MIT ดูไฟล์ใบอนุญาตสำหรับรายละเอียด