Sebelumnya saya sempat membahas tentang konfigurasi squid (khususnya squid 2.7 atau Lusca) untuk melakukan dynamic content caching, sehingga squid dapat dengan efektif dan efisien serta dapat mengoptimalkan hit pada obyek-obyek web yang bersifat dinamis. Anda dapat membaca posting tersebut disini. Yang menjadi permasalahan (sebenarnya bukan permasalahan sih.. hehehe), adalah khusus untuk video youtube, yang di cache adalah video youtube range (video youtube yang di split menjadi beberapa bagian).
Nah, dalam posting kali ini, kita akan mencoba sedikit bereksperimen agar video yang di cache / di HIT adalah video yang utuh, alias full video, aliass.. youtube non-range.
Anda sangat saya rekomendasikan untuk membaca intro tentang dynamic content caching di posting saya sebelumnya, karena disana dijelaskan konfigurasi awal yang akan menjadi dasar dari tutorial cache youtube non range ini.
Sederhananya, agar squid mampu melakukan caching video youtube non range adalah dengan men-deny url youtube range pada file konfigurasi squid (squid.conf), kemudian me-rewrite nya seperti biasa dengan menggunakan url rewriter.
Bagaimana melakukan caching youtube non range dengan squid 2.7 atau lusca?
Silakan lihat pengaturan dan konfigurasi-nya pada posting saya tentang caching dynamic content. Kemudian lakukan penyesuaian konfigurasi dengan menambahkan acl ini sesudah baris quick_abort_min -1 KB :
acl ytrange url_regex ^.*youtube.com/videoplayback.*range=.*$ http_access deny ytrange
Sehingga konfigurasinya menjadi seperti ini :
acl youtube dstdomain .youtube.com cache allow youtube cache allow all minimum_object_size 512 bytes maximum_object_size 128 Mb quick_abort_min -1 KB acl ytrange url_regex ^.*youtube.com/videoplayback.*range=.*$ http_access deny ytrange acl speedtest dstdom_regex -i speedtest.*\. acl store_rewrite_list urlpath_regex .*\/speedtest\/.*\.(jpg|txt) acl store_rewrite_list urlpath_regex .*\.ak\.fbcdn\.net\/ acl store_rewrite_list urlpath_regex http:\/\/199\.91\.15\d\.\d*\/\w{12}\/(\w*)\/(.*) acl store_rewrite_list urlpath_regex s[0-9]*\.filesonic\.com\/download\/.* acl store_rewrite_list urlpath_regex [a-zA-Z]{2}[0-9]*\.4shared\.com\/download\/ acl store_rewrite_list urlpath_regex \/(watch\?|get_video\?|videodownload\?|videoplayback.*id) acl store_rewrite_list urlpath_regex \.(jp(e?g|e|2)|gif|png|tiff?|bmp|ico|flv|wmv|3gp|mp(4|3)|exe|msi|zip|on2|mar|rar|cab)\? acl store_rewrite_list_domain url_regex ^http:\/\/([a-zA-Z-]+[0-9-]+)\.[A-Za-z]*\.[A-Za-z]* acl store_rewrite_list_domain url_regex (([a-z]{1,2}[0-9]{1,3})|([0-9]{1,3}[a-z]{1,2}))\.[a-z]*[0-9]?\.[a-z]{3} acl store_rewrite_list_path urlpath_regex \.(jp(e?g|e|2)|gif|png|tiff?|bmp|ico|flv|avc|zip|mp3|3gp|rar|on2|mar|exe|cab)$ acl store_rewrite_list_domain_CDN url_regex \.rapidshare\.com.*\/[0-9]*\/.*\/[^\/]* ^http:\/\/(www\.ziddu\.com.*\.[^\/]{3,4})\/(.*) \.doubleclick\.net.* acl store_rewrite_list_domain_CDN url_regex ^http:\/\/[.a-z0-9]*\.photobucket\.com.*\.[a-z]{3}$ quantserve\.com acl store_rewrite_list_domain_CDN url_regex ^http:\/\/[a-z]+[0-9]\.google\.co(m|\.id) acl store_rewrite_list_domain_CDN url_regex ^http:\/\/\.www[0-9][0-9]\.indowebster\.com\/(.*)(rar|zip|flv|wm(a|v)|3gp|mp(4|3)|exe|msi|avi|(mp(e?g|a|e|1|2|3|4))|cab|exe) acl store_rewrite_list urlpath_regex \/(get_video|videoplayback\?id|videoplayback.*id) \.(jp(e?g|e|2)|gif|png|tiff?|bmp|ico|flv|wmv|3gp|mp(4|3)|exe|msi|zip|on2|mar|swf)\? acl store_rewrite_list_domain url_regex ^http:\/\/([a-zA-Z-]+[0-9-]+)\.[A-Za-z]*\.[A-Za-z]* acl store_rewrite_list_domain url_regex (([a-z]{1,2}[0-9]{1,3})|([0-9]{1,3}[a-z]{1,2}))\.[a-z]*[0-9]?\.[a-z]{3} acl store_rewrite_list_path urlpath_regex \.(jp(e?g|e|2)|gif|png|tiff?|bmp|ico|flv|avc|zip|mp3|3gp|rar|on2|mar|krf|exe)$ acl store_rewrite_list_domain_CDN url_regex (khm|mt)[0-9]?.google.co(m|\.id) streamate.doublepimp.com.*\.js\? photos-[a-z].ak.fbcdn.net \.rapidshare\.com.*\/[0-9]*\/.*\/[^\/]* ^http:\/\/(www\.ziddu\.com.*\.[^\/]{3,4})\/(.*) \.doubleclick\.net.* yieldmanager cpxinteractive ^http:\/\/[.a-z0-9]*\.photobucket\.com.*\.[a-z]{3}$ quantserve\.com acl dontrewrite url_regex redbot\.org (get_video|videoplayback\?id|videoplayback.*id).*begin\=[1-9][0-9]* \.php\? acl getmethod method GET storeurl_access allow speedtest storeurl_access deny dontrewrite storeurl_access deny !getmethod storeurl_access allow store_rewrite_list_domain_CDN storeurl_access allow store_rewrite_list storeurl_access allow store_rewrite_list_domain storeurl_access allow store_rewrite_list_path storeurl_access deny all storeurl_rewrite_program /etc/squid/storeurl.pl storeurl_rewrite_children 5 storeurl_rewrite_concurrency 10 refresh_pattern (get_video\?|videoplayback\?|videodownload\?) 5259487 99999999% 5259487 override-expire ignore-reload ignore-private negative-ttl=0 refresh_pattern -i \.(flv|mp4)$ 10080 90% 999999 ignore-no-cache override-expire ignore-private #### jika ada refresh pattern lain, letakkan dibawah baris ini #### refresh_pattern -i \.facebook.com.*\.(jpg|png|gif) 10080 80% 10080 ignore-reload override-expire ignore-no-cache refresh_pattern -i \.fbcdn.net.*\.(jpg|gif|png|mp3) 10080 80% 10080 ignore-reload override-expire ignore-no-cache refresh_pattern static\.ak\.fbcdn\.net*\.(jpg|gif|png) 10080 80% 10080 ignore-reload override-expire ignore-no-cache refresh_pattern ^http:\/\/profile\.ak\.fbcdn.net*\.(jpg|gif|png) 10080 80% 10080 ignore-reload override-expire ignore-no-cache #### default refresh_pattern, letakkan paling bawah! ### refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern . 0 0% 4320
Kemudian reconfigure atau restart squid anda.
Lakukan ujicoba dengan memutar sebuah video pada youtube. Atau kalo nggak mau repot, puter video dibawah ini sampe selesai sambil memperhatikan access.log (tail -f /var/log/squid/access.log).
Setelah video selesai diputer, coba refresh halaman ini dengan menekan tombol reload atau menekan tombol F5 pada browser anda, sambil memperhatikan access.log. Jika squid berhasil melakukan caching youtube non range, maka akan terlihat log seperti ini :
1344307461.355 0 192.168.1.147 TCP_DENIED/403 2991 GET http://o-o---preferred---pttelkom-cgk3---v11---lscache1.c.youtube.com/videoplayback? - NONE/- text/html 1344307476.400 14674 192.168.1.147 TCP_HIT/200 17013118 GET http://o-o---preferred---pttelkom-cgk3---v11---lscache1.c.youtube.com/videoplayback? - NONE/- video/x-flv
Terlihat TCP_HIT untuk full video, dan loading video pada pemutar video youtube akan full dalam sekejap. :)
Semoga bermanfaat! :)
Credits :
http://www.forummikrotik.com/ (mas ucok_karnadi, dkk).
Gimana Mas.. Udah ada pembaruan belum masalah yuotube cache gini.. :)
Trims
itu pakek clearos atau pakek centos ya atau ubuntu
clearos atau ubuntu bisa..
tapi sayangnya, pada april 2013 youtube merubah coding mereka, alhasil teknik ini nggak bisa dipake lagi. :(
gmn mas solusi bwt cache youtube lg
untuk sementara belum ada solusi yg pas.. kita tunggu saja perkembangan selanjutnya.
Youtube gagal dicache.
http://ubuntu-indonesia.com/forums/ubbthreads.php/topics/129656/HOT_POOLLING_Apakah_Youtube_Er#Post129656
yup. karena youtube ganti coding nya. :)