ทำไมการลดขนาด HTML / Javascript จึงมีประโยชน์


14

ทำไมการลดขนาด HTML / Javascript จึงมีประโยชน์เมื่อโปรโตคอล HTTP รองรับการบีบอัดข้อมูล gzip อยู่แล้ว?

ฉันตระหนักดีว่า Javascript / HTML minification มีศักยภาพที่จะลดขนาดของ JavaScript / HTML ไฟล์โดยการลบช่องว่างที่ไม่จำเป็นและอาจเปลี่ยนชื่อตัวแปรไม่กี่ตัวอักษรแต่ละ แต่ไม่ได้อัลกอริทึม LZW การทำโดยเฉพาะอย่างยิ่งได้ดีเมื่อมีหลายซ้ำแล้วซ้ำอีก ตัวอักษร (เช่นช่องว่างมากมาย)

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

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

ดังนั้นประสิทธิภาพที่คุณได้รับจากการลดขนาดJavascript / HTML จริงๆเมื่อคุณลดขนาดไฟล์ลงอย่างมากด้วยการบีบอัด gzip

คำตอบ:


11

เนื่องจากการบีบอัด gzip มีโอเวอร์เฮดของตัวเอง (CPU) การลดขนาดเป็นการบีบอัด "low hanging" ครั้งแรกที่สามารถนำไปใช้ได้โดยไม่ต้องใช้ CPU

สิ่งเหล่านี้อาจดูเหมือนไม่มีนัยสำคัญอย่างไรก็ตามตัวเลขจะมีความหมายเมื่อไม่นาน

นอกจากนี้ด้วย minification คุณมีgzip น้อยกว่า


3
เว็บเซิร์ฟเวอร์สมัยใหม่จะ gzip ไฟล์ javascript สำหรับทุกคำขอหรือไม่ ดูเหมือนว่าเซิร์ฟเวอร์จะแคชเนื้อหา gzipped แบบคงที่เนื่องจากไม่น่าจะเปลี่ยนแปลง
aaberg

@aaberg ถึงแม้จะเป็นข้อมูลแคชบนเซิร์ฟเวอร์ (ไม่ว่าแคชไม่ดี)
chills42

@ chilis42: เซิร์ฟเวอร์สามารถให้บริการไฟล์ล่วงหน้า gzipped จากระบบไฟล์เองได้หากเป็นปัญหา
herby

+1 สำหรับสเกล หากคุณมีผู้ใช้ 10 คนและ 100 ครั้งต่อวันจะไม่เกี่ยวข้อง หากคุณต้องการเซิร์ฟเวอร์ 100k ต่อชั่วโมงก็จะประหยัดอย่างมาก
SoylentGray

2
บางสิ่งบางอย่างบอกฉันว่าการทำงานเต็มรูปแบบคอมไพเลอร์ JavaScript และหลายการเพิ่มประสิทธิภาพการทำงานในการแสดงภายในทั้งหมดของมันมักจะนำมาใช้ใน Java เป็นไม่ได้เป็น CPU ค่าใช้จ่ายต่ำ
Oleg V. Volkov

5

โดยทั่วไป Minification + gzip ให้ผลลัพธ์ที่ดีกว่าเนื่องจาก gzip เป็นอัลกอริธึมทั่วไปที่ไม่ได้ปรับให้เข้ากับอินพุตเดียวหรืออีกอันหนึ่งโดยเฉพาะในขณะที่ minificator รับรู้ถึงเนื้อหาและสามารถทำงานได้โดยอัลกอริทึมการบีบอัดทั่วไปไม่สามารถทำได้ มันอาจจะสูญเสียเช่นกัน (คิดว่า: กำจัดความคิดเห็นและช่องว่างทั้งหมด - นั่นคือการบีบอัด 100% สำหรับข้อมูลนี้คุณจะเอาชนะได้อย่างไร?) ในขณะที่การบีบอัดทั่วไปไม่สามารถทำได้


2

คุณอาจไม่ได้รับประโยชน์จากประสิทธิภาพมากเกินไป แต่คุณจะลดการใช้แบนด์วิดท์ หากคุณสามารถโกนไฟล์ js (และ css) ได้กี่ kb ผ่านทาง minification (และการใช้ css sprites เพื่อลดจำนวนคำขอ) และคุณให้บริการผู้ใช้ 1,000 คนต่อวันหลังจากหนึ่งเดือนคุณจะลดแบนด์วิดท์ลงอย่างมาก


1
+1: การลดขนาดเป็นเรื่องของการออมโดยรวม อาจช่วยให้คำขอแต่ละรายการเร็วขึ้น แต่ประเด็นก็คือเพื่อลดการใช้แบนด์วิดท์เมื่อเวลาผ่านไป
Joel Etherton

1

สิ่งที่แพงที่สุดที่คุณทำในเว็บแอพพลิเคชั่นคือการส่งสิ่งที่คุณต้องการ การส่งสิ่งที่น้อยลงลวดมักจะชนะสุทธิถ้าคุณจ่ายในรอบของ CPU

นอกจากนี้ฉันไม่มีอะไรทางวิทยาศาสตร์ที่จะสนับสนุนสิ่งนี้ แต่ฉันคาดหวังว่าเครื่องมือ minification สามารถบีบอัด javascript ได้ดีกว่า gzip หากไม่มีเหตุผลอื่นนอกจากเครื่องมือ minification นั้นเป็นโดเมนเฉพาะและสามารถปรับให้บีบอัด javascript ได้ดีขึ้น เป็นเครื่องมือทั่วไปและจะประนีประนอมในกลาง

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