-
Notifications
You must be signed in to change notification settings - Fork 449
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
ลดปริมาณการส่งข้อมูล #2
Conversation
…รเจกต์ ข้อมูลเพิ่มเติม: http://editorconfig.org/
หลังจากเอา JSZIP ออก ปริมาณการถ่ายโอนข้อมูล (วัดจาก Chrome DevTools) ลดลงจาก 113.6 KB เหลือ 87.3 KB (ลดลง 26.3 KB, 23%)
อู้ว นี่มัน PR เมพ เขียนอธิบายละเอียดมากๆ ครับ กราบส์ ขอบคุณครับ |
ขอบคุณครับบ มี Feedback มาจากพี่ @icez และน้อง @jarindr บอกว่าปกติ Nginx โดย Default configuration มันจะไม่ Gzip ไฟล์ .JSON อัตโตมัติครับ 😭 (ใช้ GitHub Pages กับ Firebase เพลินไปหน่อย มัน Gzip เกือบหมดเลย) ฉะนั้นคนที่ใช้ Nginx เป็นเว็บเซิฟเวอร์ อาจจะต้องตั้งค่าให้มันอัดไฟล์ JSON ด้วย (ไม่แน่ใจว่า Apache ทำด้วยไหม) วิธีแก้ทางนึงที่ไม่ต้องแก้ Config ของเว็บเซิฟเวอร์ คือเปลี่ยนจากไฟล์ .json เป็นไฟล์ .js แล้วโหลดผ่าน JSONP เอาครับ (ไม่แน่แค่ Rename |
@dtinth IMO ไม่น่าซีเรียสมากขนาดนั้น บอก server admin ให้เพิ่ม compression ให้ application/json น่าจะง่ายกว่า ประโยชน์เยอะกว่า ยิ่ง apache นี่แก้ใส่ .htaccess ได้เลยด้วยซ้ำ |
แยก branch เลยละกัน 555 https://github.com/earthchie/jquery.Thailand.js/tree/zipped_version |
เอมาเยือน |
ยอดเยี่ยมมากครับผม |
สวัสดีครับ, ขอบคุณครับสำหรับไลบรารี่ดีๆ สำหรับนักพัฒนาเว็บไทย 👍
ใน PR นี้ผมลองทำการ Optimize ต่างๆ เพื่อลดขนาดไฟล์ที่ส่งไปยังเบราเซอร์ครับ โดยถือว่าเซิฟเวอร์ได้บีบอัดข้อมูลด้วยอัลกอริธึม Gzip อยู่แล้ว และปริมาณการถ่ายโอนข้อมูลวัดจาก Chrome DevTools ครับ (ได้ทำการ Disable Cache แล้ว)
ตารางที่ 1: ขนาดไฟล์ก่อนทำการ Optimize
เอา JSZIP ออกแล้วใช้ไฟล์ .json ธรรมดา
โดยปกติเว็บเซิฟเวอร์จะ Gzip ไฟล์ JSON อยู่แล้วครับ ดังนั้นจึงไม่จำเป็นต้องอัด ZIP ไฟล์ฐานข้อมูล
หลังจากเอา JSZIP ออกอันนี้คือปริมาณข้อมูลที่ถ่ายโอนครับ:
ตารางที่ 2: ขนาดไฟล์หลังนำ JSZIP ออก
ขนาดลดลงจากเดิม: 26.3 KB (23.1%)
บีบอัดฐานข้อมูล
เนื่องจากฐานข้อมูลจังหวัด–อำเภอ–ตำบล–รหัสไปรษณีย์ มีลักษณะเป็น Hierarchical อยู่แล้ว (คือสามารถ Represent ในรูปของ Tree ได้) เมื่อนำมาวางเป็นตารางจึงเกิดความซ้ำซ้อนจนเกินไปครับ
จะเห็นว่า
, a: 'เมืองระยอง', p: 'ระยอง', z:
ถูกเขียนซ้ำหลายครั้งมาก ทั้งๆ ที่ เมืองระยอง–จังหวัดระยอง มีอยู่แค่ที่เดียวดังนั้นผมจึงลองอัพเปลี่ยนรูปแบบฐานข้อมูลให้เป็นรูปแบบ Tree แทนครับ:
หลังจากจัดเรียงข้อมูลแบบนี้แล้วทำให้ฐานข้อมูลขนาดลดลงเหลือ 286 KB ครับ
ตารางที่ 3: ขนาดไฟล์หลังปรับโครงสร้างฐานข้อมูล
จาก PR นี้จะทำให้ขนาดไฟล์ที่โหลด ลดลงจาก 113.6 KB เหลือ 74.5 KB ครับ (ลดลง 39.1 KB, 34%)
อันนี้คือโค้ดที่ใช้ในการสร้างไฟล์
data.json
ครับ (ภาษา Ruby)