Squid Caching Video Youtube Non Range

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).

22 Comments

  1. Jablay

    Gimana Mas.. Udah ada pembaruan belum masalah yuotube cache gini.. :)
    Trims

    • fazar

      clearos atau ubuntu bisa..
      tapi sayangnya, pada april 2013 youtube merubah coding mereka, alhasil teknik ini nggak bisa dipake lagi. :(

  2. yufa

    gmn mas solusi bwt cache youtube lg

    • fazar

      untuk sementara belum ada solusi yg pas.. kita tunggu saja perkembangan selanjutnya.

  3. Suprianto

    Youtube gagal dicache.

    http://ubuntu-indonesia.com/forums/ubbthreads.php/topics/129656/HOT_POOLLING_Apakah_Youtube_Er#Post129656

    • fazar

      yup. karena youtube ganti coding nya. :)

Leave a Reply

Your email address will not be published. Required fields are marked *