WP-Optimize ปฏิเสธข้อกล่าวหาเรื่องการโกงเครื่องมือประสิทธิภาพ

เผยแพร่แล้ว: 2022-08-31

เมื่อวานนี้ เราได้เผยแพร่ข้อกล่าวหาจาก Gijo Varghese ต่อ UpdraftPlus ผู้สร้าง WP-Optimize Varghese เป็นผู้ก่อตั้ง FlyingProxy ซึ่งเป็นบริษัทคู่แข่ง และระบุว่าตนเองเป็น เขากล่าวหาว่าปลั๊กอิน "โกง Pagespeed และเครื่องมืออื่นๆ" โดยซ่อนไฟล์ JavaScript ไม่ให้โหลดเมื่อผู้ใช้ทดสอบไซต์ของตนผ่านเครื่องมือทดสอบประสิทธิภาพยอดนิยม โค้ดนี้ใช้ชื่อที่ทำให้สับสนในเครื่องมือทดสอบ ซึ่งทำให้เขาสงสัย

Varghese ละเลยที่จะพูดถึงในทวีตของเขาว่านี่คือสิ่งที่เกิดขึ้นเมื่อหนึ่งในการตั้งค่าของปลั๊กอินภายใต้ Minify > JS ถูกตั้งค่าให้เลื่อน JavaScript มีการตั้งค่าปุ่มตัวเลือกสองปุ่ม แต่ทำให้เกิดความสับสน

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

ตัวเลือกวิทยุที่สองมีไว้สำหรับผู้ใช้ที่ต้องการเลื่อน JavaScript ทั้งหมด หากเลือก “Defer โดยใช้ JavaScript (ใช้วิธีนี้หากคุณต้องการการสนับสนุนสำหรับเบราว์เซอร์รุ่นเก่า)” ควรทำตามที่อธิบายในลิงก์อย่างแน่นอน:

หากมีการตั้งค่าแอตทริบิวต์ defer จะระบุว่าสคริปต์ถูกดาวน์โหลดควบคู่ไปกับการแยกวิเคราะห์หน้า และดำเนินการหลังจากหน้าแยกวิเคราะห์เสร็จแล้ว

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

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

“พวกเขากำลังให้ตัวเลือกสำหรับผู้ใช้ในการโกงเครื่องมือทดสอบ” Varghese กล่าว “นอกจากนี้ การใช้ชื่ออย่าง 'ighth' สำหรับ Lighthouse และ 'tmetr' สำหรับ GTmetrix แสดงให้เห็นชัดเจนว่าพวกเขากำลังพยายามทำอะไร

“ผู้ใช้ส่วนใหญ่พยายามปิดการใช้งานและเปิดใช้งานคุณสมบัติต่างๆ เพื่อดูว่าอันใดที่เพิ่มความเร็ว/คะแนนในเครื่องมือทดสอบ”

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

WP-Optimize เผยแพร่การตอบสนองสาธารณะต่อข้อกล่าวหาในวันนี้ แต่ยังไม่ได้เปิดเผยผลลัพธ์ใด ๆ จากการสอบสวนโค้ดที่พวกเขาเสร็จสิ้น แต่บริษัทได้อ้างถึงวิดีโอที่สร้างโดย Peter Wilkinson จาก Divi Engine ซึ่งอ้างว่าผู้ใช้ต้องป้อนสคริปต์ด้วยตนเองเพื่อแยกไซต์ทดสอบออก

วิลกินสันอ้างว่าสรุปว่า "Gijo Varghese ใช้การหลอกลวงเพื่อโปรโมต Flying Pages และ Flying Press" เพื่อนำเสนอประเด็นนี้ต่อสาธารณชนบน Twitter

“ในความเป็นจริง (จากการค้นคว้าของฉัน) WP-Optimize ไม่ได้ 'โกง' เครื่องมือ Pagespeed เมื่อคุณติดตั้งหรือย่อ JavaScript ของคุณ” วิลกินสันกล่าว

“ในการ 'โกง' เครื่องมือ คุณต้องเพิ่มไฟล์ JS ที่คุณต้องการโหลดแบบอะซิงโครนัสด้วยตนเองไปยังการตั้งค่าที่มีป้ายกำกับว่า 'ใช้สิ่งนี้หากคุณมีสคริปต์อิสระโดยสมบูรณ์ หรือต้องการแยกสคริปต์ออกจากการทดสอบความเร็วหน้า ( PageSpeed ​​Insights, GTMetrix…)'”

กรณีนี้ไม่ได้. วิธีที่ง่ายที่สุดในการทดสอบคือการติดตั้งปลั๊กอิน เปิด "เลื่อน JavaScript ทั้งหมด" แล้วดูแหล่งที่มาเพื่อดูว่าไม่รวมเครื่องมือประสิทธิภาพ

เนื่องจากการตอบสนองสาธารณะของ WP-Optimize ต่อปัญหาไม่ได้รวมสิ่งใดจากการตรวจสอบโค้ดของพวกเขา ฉันจึงติดต่อพวกเขาอีกครั้ง Venkat Raj รองหัวหน้าของพวกเขาไม่สามารถตอบได้ว่าทำไมการตั้งค่าอื่น ๆ ในปลั๊กอินจึงลบ JS สำหรับเครื่องมือทดสอบประสิทธิภาพอย่างเงียบ ๆ ด้วยการคลิกปุ่มตัวเลือก Joe Miles หัวหน้าฝ่ายกลยุทธ์ของบริษัท แบ่งปันข้อมูลล่าสุดที่เขาได้รับเกี่ยวกับประเด็นนี้จาก Venkat Raj:

“การตั้งค่าขั้นสูงที่ใช้ในข้อกล่าวหานั้นมีประโยชน์จริง ๆ ในการค้นหาว่าไฟล์ js/css ที่จำเป็นนั้นทำให้หน้าเว็บช้าลงจริงหรือไม่ ฟีเจอร์นี้เป็นค่าเริ่มต้น ปิด 'ปิด' และเปิดใช้งานโดยผู้ใช้ขั้นสูงที่รู้ว่าพวกเขากำลังทำอะไรอยู่เท่านั้น

“คุณสามารถใช้คุณสมบัตินี้ได้หากคุณมีสคริปต์ที่เป็นอิสระอย่างสมบูรณ์ หรือต้องการแยกสคริปต์ออกจากการทดสอบความเร็วของหน้า (PageSpeed ​​Insights, GTMetrix…)

“สคริปต์อิสระเป็นตัวอย่างสคริปต์ 'การวิเคราะห์' หรือ 'พิกเซล' ไม่จำเป็นสำหรับเว็บไซต์ในการทำงาน ' ใช้สิ่งนี้ถ้าคุณมีสไตล์ชีตที่เป็นอิสระอย่างสมบูรณ์ หรือต้องการแยกสไตล์ชีตออกจากการทดสอบความเร็วของเพจ (PageSpeed ​​Insights, GTMetrix…) '

สิ่งนี้ใช้กับปุ่มตัวเลือกแรก ปุ่มที่สองไม่มีข้อบ่งชี้ใด ๆ ว่าจะปิดสคริปต์ทั้งหมดเมื่อใช้เครื่องมือทดสอบ และดูเหมือนว่าทีมงานของ WP-Optimize จะไม่ตระหนักว่าปุ่มนี้ใช้งานได้เมื่อคลิกปุ่มตัวเลือก

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

“อย่างไรก็ตาม เราเชื่อว่านี่เป็นการเบี่ยงเบนความสนใจจากข้อกล่าวหาที่เป็นเท็จ และสิ่งที่สำคัญคือ UI มีความชัดเจนมากสำหรับการตั้งค่า ดังนั้นผู้ใช้จะไม่ถูกหลอก” Miles กล่าว

Raul Peixoto ผู้เขียน Fast Velocity Minify (FVM) ซึ่งเป็นปลั๊กอินที่ WP-Optimize คัดลอกโค้ด กล่าวว่าเขาสามารถยืนยันได้ว่าโค้ดนี้เป็นส่วนหนึ่งของ FVM แต่บอกว่าไม่ได้ใช้ในลักษณะเดียวกัน:

วัตถุประสงค์ของรหัสดังกล่าวบน FVM นั้นแตกต่างอย่างสิ้นเชิงจากรหัสบน WP Optimize และยิ่งไปกว่านั้น ผู้ใช้จำเป็นต้องเปิดใช้งานตัวเลือกนี้ด้วยตนเองผ่าน wp-admin (ถูกปิดใช้งานโดยค่าเริ่มต้น)

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

สิ่งนี้มีอยู่ใน FVM เพื่อตอบคำถามเช่นนี้:
“ฉันมีไซต์การผลิตและประสิทธิภาพของฉันต่ำ ประสิทธิภาพจะเป็นอย่างไรหากปลั๊กอินนี้ไม่ได้อยู่ที่นี่ แต่ยังไม่ได้ลบออกจากไซต์สำหรับผู้ใช้ทั่วไปจริงๆ”
“ประสิทธิภาพจะเป็นอย่างไรหากฉันสามารถเลื่อนเวลาสคริปต์ทั้งหมด หรือสคริปต์เฉพาะที่ปัจจุบันไม่สามารถใช้งานร่วมกับ defer ได้ ก่อนที่จะทำการเปลี่ยนแปลงนั้นให้กับทุกคนจริงๆ”

คำอธิบายอย่างเป็นทางการเกี่ยวกับการใช้งานบน FVM มีอยู่ในฟอรัมการสนับสนุนของปลั๊กอินเมื่อเช้านี้

“ฉันคิดว่านักพัฒนาที่ได้รับการว่าจ้างจาก WP Optimize ไม่เข้าใจว่าสิ่งนี้กำลังทำอะไรบน FVM หรือภายใต้การตั้งค่าใด หรือบางทีพวกเขาอาจรู้สึกอยากที่จะใช้มันเป็นแฮ็ค” Peixoto กล่าว

“เราควรจำไว้อย่างระมัดระวังด้วยว่าในขณะนั้นยังไม่มีตัววัด Web Vitals ที่เปิดเผยต่อสาธารณะ ดังนั้นการใช้สิ่งนี้จะให้ผลลัพธ์ที่ 'วัดได้' ดีขึ้น ดังนั้นจึงให้ข้อได้เปรียบของผลิตภัณฑ์”

Piexoto กล่าวว่าเขา "รู้สึกถูกบังคับ" ให้ลบโค้ดนี้เมื่อสองปีก่อน เนื่องจากนักพัฒนาที่โกงการทดสอบสำหรับลูกค้าของตนบ่อยเพียงใด:

กรอไปข้างหน้าในบางครั้ง และฉันก็รู้ว่านักพัฒนาบางคนใช้สิ่งนี้เพื่อโกงการทดสอบสำหรับลูกค้าของพวกเขา ดังนั้นฉันจึงรู้สึกว่าจำเป็นต้องตัดสินใจเกี่ยวกับ FVM 3 (เมื่อปลายปี 2020 แล้ว) เพื่อลบคุณสมบัตินี้ซึ่งพบโดย นักพัฒนาที่โกรธแค้นจำนวนมากประท้วงเมื่อลูกค้าเริ่มบ่นว่าคะแนนของพวกเขาลดลง

ฉันพยายามในเวลานั้นเพื่ออธิบายว่าการมีคะแนนที่ดีนั้นไม่เหมือนกับการมีตัววัด Web Vitals ที่ดี แต่ในที่สุดฉันก็เลิกทำอย่างนั้น เนื่องจากบางคนสนใจผลการทดสอบมากกว่าประสิทธิภาพจริง

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

ด้วยเหตุผลใดก็ตาม UpdraftPlus เลือกที่จะรวมรหัสนี้เข้ากับ WP-Optimize ในปี 2020 และตามที่รายงานเมื่อวานนี้ไม่ได้แตะต้องรหัสตั้งแต่นั้นเป็นต้นมา

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

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