เกริ่นนำกันก่อนนะครับ ก่อนจะเข้าเรื่อง
ก่อนอื่นต้องอธิบายก่อนว่า ทำไม Squid ถึงไม่เก็บ Cache Video ของ Youtube
เนื่องจากในการเข้า web youtube นั้น url ของ youtube ที่ใช้เก็บ video ไฟล์ จะมีการเปลี่ยนแปลงทุกครั้ง
ถึงแม้จะเข้าชม ไฟล์ video อันเดิมก็ตาม
เช่น
1226635657.319 46941 192.168.200.101 TCP_MISS/200
8020790 GET
http://58.147.1.199/youtube/1/0NPYO9r7w9Q.34?ivit=5772&original=www.youtube.com/get_video?video_id=0NPYO9r7w9Q&
t=OEgsToPDskIYtusBMJfotlXByGSkbxWq&el=detailpage&ps=&fmt=34 - DIRECT/58.147.1.199 video/flv
1226636671.937 39267 192.168.200.101 TCP_MISS/200
8020790 GET
http://58.147.1.199/youtube/1/0NPYO9r7w9Q.34?ivit=6794&original=www.youtube.com/get_video?video_id=0NPYO9r7w9Q&
t=OEgsToPDskKFVmH7tmlIN8VwmVVf7sLx&el=detailpage&ps=&fmt=34 - DIRECT/58.147.1.199 video/flv
1226637272.374 41802 192.168.200.101 TCP_MISS/200
8020790 GET
http://58.147.1.199/youtube/1/0NPYO9r7w9Q.34?ivit=7392&original=www.youtube.com/get_video?video_id=0NPYO9r7w9Q&
t=OEgsToPDskLDiJqHQFM5IcaNf1DXktWN&el=detailpage&ps=&fmt=34 - DIRECT/58.147.1.199 video/flv
จากตัวอย่างจะเห็นว่า video_id และขนาดไฟล์ จะเป็นอันเดียวกัน แต่ตัวพารามิเตอร์ t จะแตกต่างกันทุกครั้งที่เข้าชม
และ Youtube ก็ยังมี url ในรูปแบบอื่น ๆ ที่คล้าย ๆ กัน แตกต่างกันในเรื่องของ signature บ้าง
เช่น
1226641046.961 68113 192.168.200.101 TCP_MISS/200
10205115 GET
http://ash-v225.ash.youtube.com/get_video?video_id=X2LaIAwDpdg&ip=222.1
23.139.157&signature=1B8ABF039BD23F6EBEB35B3494C824EA2CFF56B0.
12E2A792F9A5C17B0E7CD06B4B5129EF69B57CD6&sver=2&expire=1226662740&key=
yt4&ipbits=2 - DIRECT/64.15.119.178 video/flv
1226641324.612 105734 192.168.200.101 TCP_MISS/200
9042408 GET
http://v10.cache.googlevideo.com/get_video?origin=ash-v187.ash.youtube.com&
video_id=ZGNgE5zz3Eg&ip=222.123.139.157&signature=B1E361E95586BB6D9312B77E055D3F05E60735D2.
7C20F38BA40C826ED42870B16865D65C763125B2&sver=2&expire=1226662981&key=yt4&ipbits=2 - DIRECT/74.125.96.84 video/flv
1226639361.780 149854 192.168.200.101 TCP_MISS/200
13743131 GET
http://sjc-v146.sjc.youtube.com/get_video?video_id=nH-ly_HIfVs&ip=222.1
23.139.157&signature=DDD840A0223D17F368780D14CDE045CB053B605F.
B4CB5B2C6E7C8D83B8CA7A53F43DF42031F35A6C&sver=2&expire=1226660973&key=
yt4&ipbits=2 - DIRECT/64.15.125.239 video/flv
ดังนั้นจึงทำให้ Squid เข้าใจว่า เป็นไฟล์คนละไฟล์กัน จึงทำการโหลดใหม่ทุกครั้งที่มีการเข้า video ไฟล์ดังกล่าว
ในการที่จะให้ Squid เก็บไฟล์ดังกล่าว จึงจะต้องทำให้ Squid รับรู้ได้ว่า url ทั้งสองนี้ ระบุไฟล์ที่เหมือนกัน
สิ่งที่สามารถระบุได้ว่า video ไฟล์ ของ youtube นั้น เป็นไฟล์เดียวกันหรือไม่ ก็คือ พารามิเตอร์
video_id ที่อยู่ใน url นั่นเอง
ดังนั้นก็ได้มีความพยายามหารูปแบบ วิธีการต่าง ๆ ในการจะนำมาระบุให้ Squid รู้ว่า url นั้นอ้างอิงไฟล์เดียวกัน
และไม่ต้องไปดึงมาใหม่ ให้ดึงจาก cache ที่มีอยู่แทน