ข้ามไปยังเนื้อหา

ขีดจำกัดการอัปโหลดรูป WordPress และวิธีแก้

คำแนะนำส่วนใหญ่บอกให้คุณแก้ไข php.ini แต่บนโฮสติ้งแบบแชร์ มักทำไม่ได้ การบีบอัดรูปภาพก่อนใช้งานได้ผลเสมอในทุกกรณี

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

เกือบทุกบทความในหัวข้อนี้มักจะบอกให้คุณแก้ไขไฟล์ php.ini, .htaccess หรือ wp-config.php คำแนะนำเหล่านั้นอิงจากการเข้าถึงเซิร์ฟเวอร์ที่เจ้าของเว็บไซต์ส่วนใหญ่ไม่มี และต่อให้เข้าถึงได้ ก็ควรค่าแก่การตั้งคำถามว่าการเพิ่มขีดจำกัดนั้นเป็นทางเลือกที่ถูกต้องหรือไม่

ที่มาของขีดจำกัด

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

  • upload_max_filesize ควบคุมขนาดไฟล์เดี่ยวที่ใหญ่ที่สุดที่ PHP จะยอมรับ
  • post_max_size ควบคุมขนาดรวมทั้งหมดของการส่งข้อมูล ดังนั้นค่านี้จึงต้องมีค่ามากกว่าขนาดไฟล์
  • memory_limit ควบคุมปริมาณหน่วยความจำที่กระบวนการย่อขนาดสามารถใช้ได้ในขณะสร้างภาพย่อ (thumbnail)
  • max_execution_time อาจทำให้เกิดความผิดพลาดได้เช่นกัน เนื่องจากรูปภาพขนาดใหญ่อาจใช้เวลาประมวลผลนานเกินกำหนดก่อนที่จะเสร็จสิ้น

ค่าที่สามมักทำให้เกิดข้อผิดพลาดที่สร้างความสับสนมากที่สุด ไฟล์ที่อัปโหลดสำเร็จแล้วยังคงสามารถล้มเหลวได้ในขณะที่ WordPress กำลังสร้างขนาดภาพย่อ ส่งผลให้เกิดรูปภาพที่เสียหายในคลังสื่อ (media library) แทนที่จะเป็นข้อผิดพลาดในการอัปโหลด

ทำไมการบีบอัดจึงดีกว่าการเพิ่มขีดจำกัด

ภาพถ่ายขนาด 6 MB บนหน้าเว็บคือปัญหา ไม่ว่าเซิร์ฟเวอร์จะยอมรับมันหรือไม่ก็ตาม การเพิ่มขีดจำกัดจะช่วยลบข้อความแสดงข้อผิดพลาดออกไป แต่ยังคงทิ้งน้ำหนักของไฟล์ที่แท้จริงเอาไว้เช่นเดิม

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

วิธีหลีกเลี่ยงข้อจำกัดเรื่องขนาด

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

  1. อ่านขีดจำกัดที่แสดงอยู่ใต้กล่องอัปโหลดของ WordPress ซึ่งเป็นตัวเลขจริงสำหรับโฮสติ้งของคุณ
  2. ปรับขนาดรูปภาพให้เท่ากับความกว้างในการแสดงผล โดยคูณสองสำหรับหน้าจอความหนาแน่นสูง เนื่องจากภาพถ่าย 4000 พิกเซลในคอลัมน์ 800 พิกเซลเป็นการสิ้นเปลืองข้อมูลส่วนใหญ่โดยเปล่าประโยชน์
  3. แปลงเป็นรูปแบบ WebP สำหรับภาพถ่ายและกราฟิกที่จะปรากฏบนเว็บไซต์เท่านั้น
  4. บีบอัดให้มีเป้าหมายอยู่ที่ 200 KB ถึง 400 KB ซึ่งเหมาะสมกับรูปภาพเกือบทุกรูปในบทความ
  5. อัปโหลด จากนั้นตรวจสอบว่ารูปภาพแสดงผลได้อย่างถูกต้องเต็มความกว้างทั้งบนเดสก์ท็อปและมือถือ

การทำตามลำดับนี้มักจะทำให้ได้ไฟล์ที่มีขนาดเล็กกว่าต้นฉบับจากกล้องถึง 90 เปอร์เซ็นต์ โดยไม่มีการเปลี่ยนแปลงที่มองเห็นได้บนหน้าจอ ข้อผิดพลาดในการอัปโหลดจะหายไปเองโดยปริยายแทนที่จะเป็นเป้าหมายหลัก

ขนาดที่แนะนำสำหรับเนื้อหาใน WordPress

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

การใช้งานรูปภาพความกว้างในการแสดงผลความกว้างในการอัปโหลดขนาดเป้าหมาย
รูปภาพในบทความ700 px1400 px150 KB ถึง 250 KB
ภาพเด่นเต็มความกว้าง1200 px2400 px300 KB ถึง 500 KB
แบนเนอร์ส่วนหัวหรือฮีโร่1920 px1920 px300 KB ถึง 400 KB
ภาพย่อหรือการ์ด400 px800 px50 KB ถึง 100 KB
รูปโปรไฟล์หรือผู้เขียน150 px300 pxต่ำกว่า 30 KB

เมื่อใดที่การเพิ่มขีดจำกัดคือคำตอบที่ถูกต้อง

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

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

วิธีเพิ่มขีดจำกัดหากจำเป็นต้องทำ

สอบถามผู้ให้บริการโฮสติ้งก่อน เนื่องจากผู้ให้บริการแบบจัดการส่วนใหญ่สามารถเปลี่ยนค่านี้ให้ได้ตามคำขอภายในไม่กี่นาที การส่งตั๋วสนับสนุน (support ticket) จะช่วยแก้ปัญหานี้ได้เร็วกว่าการแก้ไขไฟล์กำหนดค่าบนแผนโฮสติ้งใดๆ ที่จำกัดการเข้าถึงไฟล์

  • โฮสติ้ง WordPress แบบจัดการ มักจะมีให้ตั้งค่าในแผงควบคุมหรือปรับเปลี่ยนได้เมื่อมีคำขอ
  • โฮสติ้ง cPanel มักจะมีตัวแก้ไข MultiPHP INI Editor ซึ่งสามารถตั้งค่าค่าทั้ง 3 นี้ได้โดยตรง
  • เซิร์ฟเวอร์เสมือนส่วนตัว (VPS) อนุญาตให้แก้ไขไฟล์ php.ini ได้ ซึ่งหลังจากนั้นจะต้องรีสตาร์ทบริการ PHP
  • การแก้ไขไฟล์ .htaccess สามารถใช้ได้กับเซิร์ฟเวอร์ Apache บางประเภท แต่จะทำให้เกิดข้อผิดพลาดบนเซิร์ฟเวอร์อื่น ดังนั้นควรสำรองข้อมูลไว้เสมอก่อนทำ
  • ปลั๊กอินที่อ้างว่าสามารถเพิ่มขีดจำกัดได้ ไม่สามารถเกินกว่าสิ่งที่เซิร์ฟเวอร์อนุญาตได้ ไม่ว่าคำอธิบายจะว่าไว้อย่างไรก็ตาม

ข้อผิดพลาด HTTP ที่ไม่ใช่เรื่องของขนาดไฟล์

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

ขนาดมิติของภาพ (dimensions) ที่ใหญ่โตไม่ใช่ขนาดไฟล์ เป็นตัวการที่ผลักดันการใช้หน่วยความจำ เนื่องจากเซิร์ฟเวอร์ต้องเก็บทุกพิกเซลไว้ในหน่วยความจำในขณะที่กำลังย่อขนาด รูปภาพขนาด 6000 คูณ 4000 พิกเซลต้องการหน่วยความจำมากกว่าที่ขนาดไฟล์บ่งบอกมาก การลดขนาดมิติภาพก่อนอัปโหลดจะช่วยขจัดความผิดพลาดนี้ได้ แม้ว่าตัวไฟล์จะมีขนาดต่ำกว่าขีดจำกัดอยู่แล้วก็ตาม

ขนาดภาพย่อที่ WordPress สร้างขึ้น

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

ค่าเริ่มต้นคือภาพย่อ (thumbnail) ขนาด 150x150 พิกเซล, ขนาดกลาง (medium) 300 พิกเซล, ขนาดกลางค่อนข้างใหญ่ (medium large) 768 พิกเซล และขนาดใหญ่ (large) 1024 พิกเซล ควบคู่ไปกับเวอร์ชันปรับขนาดที่ WordPress สร้างขึ้นสำหรับการอัปโหลดขนาดใหญ่มากๆ ตัวสร้างหน้าเว็บและปลั๊กอินแกลเลอรีต่างก็ลงทะเบียนขนาดของตัวเองเพิ่มเข้าไปอีก การอัปโหลดไฟล์ต้นฉบับที่มีขนาดเล็กกว่าย่อมหมายความว่าไฟล์ที่ได้จากการแปลงทั้งหมดจะมีขนาดเล็กตามไปด้วย ซึ่งเป็นเหตุผลว่าทำไมการบีบอัดก่อนอัปโหลดจึงส่งผลดีทวีคูณทั่วทั้งคลังสื่อ

การรองรับ WebP ใน WordPress

WordPress รองรับการอัปโหลดไฟล์ WebP ตั้งแต่เวอร์ชัน 5.8 เป็นต้นมา และเบราว์เซอร์ปัจจุบันทั้งหมดก็รองรับการแสดงผลรูปแบบนี้ การอัปโหลดไฟล์ WebP โดยตรงจะช่วยหลีกเลี่ยงการใช้ปลั๊กอินแปลงไฟล์ที่เว็บไซต์จำนวนมากติดตั้งไว้เพื่อจุดประสงค์เดียวกัน

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

การตรวจสอบน้ำหนักของรูปภาพบนหน้าเว็บจริง

เปิดเครื่องมือสำหรับนักพัฒนาด้วยปุ่ม F12 สลับไปที่แท็บ Network กรองเฉพาะรูปภาพ (Images) แล้วรีโหลดหน้าเว็บ แผงควบคุมจะแสดงรายการรูปภาพทั้งหมดพร้อมขนาดการถ่ายโอนจริง โดยเรียงจากขนาดใหญ่ที่สุดก่อน

มุมมองนั้นจะตอบคำถามได้โดยตรงแทนที่จะเป็นการคาดเดา ให้มองหารูปภาพเดี่ยวที่มีขนาดเกิน 500 KB และหน้าเว็บใดก็ตามที่รูปภาพรวมกันมีขนาดมากกว่า 2 MB ไฟล์ที่ใหญ่ที่สุดมักจะเป็นไฟล์ที่คุ้มค่าแก่การแก้ไขก่อนเสมอ และโดยปกติแล้วมักจะเป็นภาพส่วนหัว (header image) หรือภาพถ่ายแรกในโพสต์ การแก้ไขรูปภาพ 2 หรือ 3 รูปมักจะช่วยลดน้ำหนักส่วนเกินส่วนใหญ่บนหน้าเว็บลงได้

การแก้ไขคลังสื่อที่มีขนาดใหญ่เกินไปอยู่แล้ว

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

ดาวน์โหลดโฟลเดอร์ uploads ประมวลผลแบบแบตช์เดียว และแทนที่ไฟล์โดยใช้ชื่อเดิมเพื่อให้โพสต์ที่มีอยู่ยังคงทำงานได้ต่อไป การสร้างภาพย่อใหม่ (regenerate thumbnails) หลังจากนั้นจะช่วยสร้างขนาดภาพย่อขึ้นมาใหม่จากต้นฉบับที่เล็กกว่า ให้ทำการสำรองข้อมูลก่อนที่จะแทนที่สิ่งใดๆ เนื่องจากนี่เป็นหนึ่งในงานเกี่ยวกับรูปภาพเพียงไม่กี่งานที่ทำการเขียนทับไฟล์เดิมทันที

การประมวลผลโฟลเดอร์ uploads ทั้งหมด

วางโฟลเดอร์ลงไปในรูปแบบไฟล์ ZIP และรูปภาพที่รองรับทั้งหมดข้างในจะถูกแตกไฟล์ ปรับขนาด และบีบอัดได้ภายในรอบเดียว สามารถประมวลผลไฟล์ได้สูงสุด 500 ไฟล์ต่อชุด ซึ่งครอบคลุมเว็บไซต์ขนาดเล็กและขนาดกลางส่วนใหญ่ได้ในเวลาไม่กี่รอบ

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

กลับสู่บล็อก