ตอนนี้ผมเขียนเว็บไซต์ของผม (ซึ่งตอนนี้บริการแต่คนไทย) ให้โหลดไลบรารี่หลักจาก Google CDN ดังนี้
src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js" src="//ajax.googleapis.com/ajax/libs/jqueryui/1.9.2/jquery-ui.min.js"
แต่จากการทดสอบบนเครื่องผมและหลายๆ คน พบว่าแทนที่จะทำให้เว็บโหลดเร็วขึ้น กลับทำให้เว็บโหลดช้าลงกว่าที่ควรจะเป็น โดยเฉพาะในช่วงเวลาตอนเย็นหรือหัวค่ำที่ทราฟฟิกแน่น
ผมพบว่าคอขวดก็จะอยู่ที่ ajax.googleapis.com ซึ่งน่าจะเป็นเพราะทราฟฟิกขาออกนอกประเทศบ้านเรามันตันง่ายในช่วงตอนหัวค่ำ (โดยเฉพาะเน็ตทรู) ในขณะที่ถ้าผมปล่อยโหลดจากเซิฟเวอร์ของผมเอง (Amazon EC2 จากสิงคโปร์) จะช้าบ้าง แต่ไม่ติดคอขวดบ่อยแบบที่เซิฟเวอร์ของกูเกิลเป็น
ซึ่งแน่นอน คอขวดที่ว่าจะเจอเฉพาะกรณีที่ browser ของผู้ใช้นั้นๆ ไม่เคยแคช jquery.min.js จาก ajax.google.com เก็บไว้เลย ถ้าเครื่องเขามีแคชพวกนี้อยู่แล้ว เว็บของผมก็จะโหลดเร็วขึ้นไปด้วย (ซึ่งนี่ก็คือข้อดีของการใช้ CDN)
คำถามก็คือ จากประสบการณ์การเขียนเว็บของพวกท่าน ผู้ใช้เน็ตไทยของเรามีโอกาสแคชจาก Google CDN กันมากขนาดไหน คุ้มค่าหรือไม่ที่จะเสี่ยงโหลดจาก CDN ?? เพราะถ้าเขามีแคชแล้วผมก็โชคดีไป แต่ถ้าเขายังไม่มีแล้วดันมาโหลดเว็บผมครั้งแรกตอนหัวค่ำ ก็จะเจอ wait time ไม่ต่ำกว่า 10 วินาทีจากกูเกิล ซึ่งแน่นอนว่าผู้ใช้เน็ตตามบ้านทั่วไปเขาไม่รอนานขนาดนั้นแน่นอน ยิ่งเว็บผมเป็นเว็บใหม่ด้วย ยิ่งลำบากไปใหญ่
(ซึ่งพวกฝรั่งจะไม่เจอปัญหานี้ เพราะแม้ผู้ใช้ยังไม่มี cache จาก CDN แต่ก็ยังโหลดจากเซิฟของกูเกิลได้เร็วอยู่ดี เพราะเป็นเครือข่ายเดียวกัน)
ใครเคยเจอปัญหาแบบผมบ้างครับ แล้วตัดสินใจเลือกวิธีไหนกัน
ปล. ผมเขียนโค้ดสำรองให้โหลด .js พวกนี้จากเซิฟผม เผื่อเว็บ Google CDN ล่มไว้แล้ว แต่ก็นั่นล่ะ กว่าจะได้รู้ว่า ajax.google.com มัน timeout ผู้ใช้เขาก็ปิด tab ผมไปแล้ว :(
ผมกลับสงสัยว่าทำไมเอาไปวางไว้
mr_tawan Mon, 11/02/2013 - 21:59
ผมกลับสงสัยว่าทำไมเอาไปวางไว้บน Google CDN ล่ะครับ หรือว่าเวปไซท์หลักก็อยู่บนนั้นด้วย ?
ถ้า bandwidth
bongikairu Mon, 11/02/2013 - 22:01
ถ้า bandwidth ยังเหลือเฟือก็อาจจะ host เองไปก่อนก็ได้ครับ ก็เสียไปอีกนิดหน่อย แต่แลกกับ load time ที่ดีขึ้นย่อมคุ้มกว่าอยู่แล้ว
แบนด์วิธไม่มีปัญหามากครับเพรา
Similanblu Tue, 12/02/2013 - 00:47
In reply to ถ้า bandwidth by bongikairu
แบนด์วิธไม่มีปัญหามากครับเพราะของพวกนี้มันโหลดครั้งเดียวแคชตลอดกาลอยู่แล้ว แต่ที่เลือกใช้ CDN เพราะนึกว่ามันจะทำให้ loadtime ลดลงได้จากการที่ผู้ใช้ไม่ต้องมาโหลด library พวกนี้ให้ซ้ำซ้อน (jquery + ui ก็เป็นร้อย kb แล้ว) ที่สำคัญยังลดจำนวน parallel request มาที่โฮสต์เราได้ด้วย ทำให้โหลดพวกรีซอร์สอื่นๆ ได้เร็วขึ้นอีก
แต่กลับมาเจอปัญหาแบบที่ว่านี่แหละครับ งงเลย ผมไม่มีประสบการณ์เขียนเว็บมากพอด้วย ไม่รู้ว่า ecosystem เว็บไทยเขาใช้อะไรกัน
เจอเมื่อสามสี่วัยก่อนแน่เลย
Yone Mon, 11/02/2013 - 22:04
เจอเมื่อสามสี่วัยก่อนแน่เลย ผมก็เจอเหมือนกัน ทำไมอยู่ดีๆ เว็บโหลดไม่มาสักที
ตัดปัญหาคือโฮสทั้งหมดไว้ที่ตัวเองครับ
ฮ่าๆ ตัดปัญหาไปเลย ก็ดีครับ
Similanblu Tue, 12/02/2013 - 16:43
In reply to เจอเมื่อสามสี่วัยก่อนแน่เลย by Yone
ฮ่าๆ ตัดปัญหาไปเลย ก็ดีครับ เดี๋ยวผมตัดปัญหาบ้างเหมือนกัน
แต่ทีนี้ในภาพรวม ก็จะเกิดผลเสียเล็กๆ ต่อ ecosystem เหมือนกัน คือถ้าไม่มีเว็บไทยที่ไหนยอมใช้ google CDN ซักที คนไทยก็จะไม่มีแคชพวกนี้อยู่เลย ทำให้ต้องเสียแบนด์วิธและเวลาโหลด common js ใหม่ทุกครั้งที่เข้าเว็บใหม่ ทั้งๆ ที่เป็นไฟล์เดียวกัน
แต่ก็นั่นล่ะนะ ปัญหามันอยู่ที่ CDN มันดันอยู่เซิฟต่างประเทศไกล เดี๋ยวในอนาคตผมรวยๆ บริษัทน่าเชื่อถือแล้วจะเปิด CDN โฮสต์ไฟล์พวกนี้ให้ใช้กันในไทยละกัน ฮ่าๆ ตอนนี้ตัวใครตัวมันไปก่อน
เก็บไว้ที่ host แล้วใช้ html5
itpcc Mon, 11/02/2013 - 23:46
เก็บไว้ที่ host แล้วใช้ html5 cache ช่วยก็ได้ครับ แต่ถ้าเป็น ie6 ก็ซวยไป =-="
js ผมโหลดเป็นตันเก็บไว้ host
asptuy Tue, 12/02/2013 - 02:01
js ผมโหลดเป็นตันเก็บไว้ host ec2 เหมือนกัน ไม่เคยดึงจาก google เลย
ถ้าให้บริการแต่คนไทยแล้วใช้แค
lancaster Tue, 12/02/2013 - 02:49
ถ้าให้บริการแต่คนไทยแล้วใช้แค่ static file เล็กๆพวกนี้ เป็นผมจะเช่า vps ในไทยนี่ล่ะเอาไว้เก็บ รับคนทั้งประเทศก็ยังไหวครับ
ถ้าจะเอาไฟล์ไว้ที่เรา ลองใช้
EThaiZone Tue, 12/02/2013 - 10:26
ถ้าจะเอาไฟล์ไว้ที่เรา ลองใช้ nginx ยังครับ ถ้า static file แบบนี้กิน load น้อยกว่าเยอะ
nginx
Similanblu Tue, 12/02/2013 - 16:47
In reply to ถ้าจะเอาไฟล์ไว้ที่เรา ลองใช้ by EThaiZone
nginx อยากลองใช้เหมือนกันครับแต่ยังไม่มีเวลาลองเซตอัพสักที เพราะส่วนตัวไม่ค่อยมีความรู้เรื่องเว็บแอดมินเท่าไหร่ถ้าจะลองเล่นต้องเสียเวลาเป็นอาทิตย์ ตอนนี้ต้องฝืนใจใช้ apache ไปก่อนเพราะมันมี config stack มาให้ ง่ายดี
แนะนำให้เอาไว้ที่ host
jgods Fri, 15/02/2013 - 09:20
แนะนำให้เอาไว้ที่ host ตัวเองครับ ที่ส่วนใหญ่เห็นว่าไป host ที่ google จะเป็น freecode ที่ไปหา ๆ มาใช่ไหมครับ
สำหรับเมืองไทยเราไม่เหมาะเท่าไหร่ครับ และอาจจะส่งผลให้ช้าหรือ load ไม่มาอย่างที่พบนั่นแหล่ะครับ