Self-hosted Google Analytics

ช่วงวันสองวันที่ผ่านมา ผมกับ @lewcpe นั่งจูนอัพระบบของ Blognone ให้ทำงานเร็วขึ้น (Let's make the web faster มีประโยชน์มากครับ)

หลักการใหญ่ๆ ของการจูนเว็บ (ไม่นับ database) ที่ผมพอจับความได้คือ

  • ลดขนาดของไฟล์รวมลง - อันนี้ตรงไปตรงมา
  • ลดจำนวน HTTP request ลง - เป็นผลมาจากวิธีทำงานของ HTTP socket
  • ลดการเรียกไฟล์มาจากโดเมนอื่น - เพื่อลดเวลาการ lookup

เว็บปัจจุบันมีการเรียกไฟล์ (ทั้งภาพและ JavaScript) จากโดเมนอื่นๆ เป็นอย่างมาก เช่น ปุ่ม Like, Tweet, FeedBurner, Google Analytics ฯลฯ ซึ่งถ้าเป็นเว็บขนาดเล็กๆ ก็ไม่มีปัญหาอะไรมากนัก แต่สำหรับเว็บที่เริ่มใหญ่อย่าง Blognone มันก็เริ่มมีปัญหา

ทางออกหนึ่งที่เป็นไปได้คือ โฮสต์ไฟล์สคริปต์ไว้บนโดเมนเดียวกันเลย ซึ่งในกรณีของ Google Analytics ที่ใช้ไฟล์ ga.js นั้นทำได้ รายละเอียดอ่านใน Speed Up Google Analytics, use local ga.js

สำหรับผู้ที่ใช้ Drupal ก็สบายโคตรๆ เพราะโมดูล Google Analytics มันทำได้ในตัว แค่ติ๊กตรง locally cache ในหมวด Advance ก็เรียบร้อย

Comments

เรื่องการเรียกไฟล์จากโดเมนอื่นผมยังไม่ค่อยแน่ใจนักว่า local delivery มันจะทำให้ประสิทธิภาพดีขึ้นมากน้อยเท่าไหร่นะครับ (ไม่เคยวัดจริงๆ)

ในความเห็นผมคือ
Local
- เปลือง b/w ของเรามากขึ้น
- browser ไม่รู้จักไฟล์ที่เหมือนกัน.. สมมติ blognone.com/jquery.js กับ exteen.com/jquery.js ที่เหมือนกันเด๊ะๆ แล้วมันก็ cache ทั้งสองตัว, เรียกทั้งสองตัวเวลาเข้าสองเว็บ

Cross Site
- ไม่เปลือง b/w ของเราเอง
- ถ้าเว็บหลายๆ เว็บ ใช้ lib ตัวเดียวกัน เรียกจาก CDN เดียวกัน, browser ก็รู้ว่ามันคืออันเดียวกัน เข้าสิบเว็บก็โหลดไฟล์เดียว

อันนี้ความเห็นล้วนๆ นะครับ ไม่เคยลองหรือ implement จริงๆ

- HTTP socket ไม่เคยใช้, แต่ใช้ keepalive อยู่ เร็วขึ้นพอควร (แต่ต้องตั้ง timeout ดีๆ ไม่งั้น socket เต็มไปด้วย keepalive) กับการรวมไฟล์รูปเล็กๆ โดยใช้ css ช่วย ก็ลด request ไปได้เยอะเหมือนกัน

Drupal มันทำ compresses css/js ได้ครับ ถ้าอยู่บนโดเมนเดียวกัน อย่างในกรณีนี้ js จะถูกรวมเป็นก้อนเดียว

Add new comment