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

About Fajar R. 297 Articles
Seseorang yang antusias terhadap dunia internet, IT, networking dan komputer. Tipikal introvert tapi suka berorganisasi dan adventuring ke tempat-tempat baru.

15 Komentar

  1. terimakasih tutornya mas,punya saya jg sudah berhasil menggunakn seperti apa yang ditulis diatas,namun saya mau tanya untuk chachenya karena sekarang untuk youtubenya semuanya kwalitasnya HD,nah yg jd pertanyaan saya bisa nggk kita meng denny untuk video yg HD agar bandwitd kita tidak tersedot semuanya kesana,maksud saya kita ttp bisa muter video yg sama tapi kwalitas diturunkan bukan HD,demikian terimakasih

  2. mas fajar,

    default setting proxy ipfire adalah sbb :

    Harddisk cache size (MB): 50

    Memory cache size (MB): 2

    Max object size (KB): 4096

    sedangkan spesifikasi server saya adalah :

    Processor Dual Intel Xeon 2 ghz

    RAM 128Giga

    Hdd 2Tera yg terdiri dari 4 x 500Giga

    mohon masukan nya dari mas fazar, tuning seperti apa agar server saya itu resource nya bisa dimanfaatkan secara maximal :)

     

    • ajib spek nya.. 128 Gb RAM, 4 x 500 Gb HD. saran ane untuk harddisk sistem pake yg kecil-kecil aja (20 Gb udah cukup banget – tapi dimana sekarang ada HD 20 Gb, hehehe). Itu harddisk yg 4 x 500 Gb pengen dibuat cache semua ya?

      Kalo iya, bisa masbro mount, kemudian tambahkan cache_dir untuk masing-masing harddisk di /var/ipfire/proxy/advances/acls/include.acl. Memory cache bisa dinaikkan kalo memang jumlah RAM fisik cukup tinggi. Gunakan cache replacement heap LFUDA, harddisk gede.. kita isi object yg gede juga dong. Jangan lupa, gunakan kernel PAE – cek dibagian pakfire, kemudian pilih deh kernel PAE, reboot dan pilih PAE kernel pas booting.

      goodluck. btw ini buat kantoran atau wnet ya?

    • di web interface isi aja default cache dir dengan 1 mb (agar nggak perlu patching proxy.cgi)
      kemudian tambahkan di /var/ipfire/proxy/advanced/acls/include.acl cache_dir yang baru.

      misalnya : cache_dir /disk01/cache …..

      terakhir lakukan save & reload.

    • untuk squid 3-head nggak bisa implementasi hal ini. mungkin inilah satu kekurangan squid 3 yg belum ada atau mungkin tidak akan dilengkapi storeurl, digantikan oleh dukungan icap.

  3. mas, mau tanya nih, (ga tau malu ya aku tanya terus ama mas fazar ). kalo misalkan tail -f var/log/squid/access.log yang kebaca IP proxy dan bukan ip client kenapa ya mas??

    • hallo mas zakky? apakabarnya disana? mudah-mudahan sehat selalu.

      di access.log ada ip proxy dan bukan klien, kemungkinan linux anda sedang mendownload update untuk modul-modul yang baru, karena sebagian update kan di distribusikan lewat HTTP dan sebagian kecil menggunakan FTP. ini sekedar hipotesa saja loh. coba cek juga URL apa yg diakses oleh ip tersebut untuk memastikan kemana tujuannya. semoga bermanfaat.

  4. log nya kayak gini :

    1359255718.958 70 192.168.1.111 TCP_REFRESH_HIT/304 476 GET https://fazar.net//wp-content/themes/adsimple/i/arrow.gif - DIRECT/46.105.198.10 image/gif
    1359255718.975 81 192.168.1.111 TCP_REFRESH_HIT/304 400 GET https://fazar.net//wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/nums.png - DIRECT/46.105.198.10 image/png
    1359255718.993 95 192.168.1.111 TCP_REFRESH_HIT/304 400 GET https://fazar.net//wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/plain.png - DIRECT/46.105.198.10 image/png
    1359255719.010 105 192.168.1.111 TCP_REFRESH_HIT/304 400 GET https://fazar.net//wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/wrap.png - DIRECT/46.105.198.10 image/png
    1359255719.038 117 192.168.1.111 TCP_REFRESH_HIT/304 400 GET https://fazar.net//wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/copy.png - DIRECT/46.105.198.10 image/png
    1359255719.095 129 192.168.1.111 TCP_REFRESH_HIT/304 400 GET https://fazar.net//wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/popup.png - DIRECT/46.105.198.10 image/png
    1359255719.274 69 192.168.1.111 TCP_REFRESH_HIT/304 400 GET https://fazar.net//wp-content/plugins/crayon-syntax-highlighter/css/images/toolbar/expand.png - DIRECT/46.105.198.10 image/png
    1359255719.547 266 192.168.1.111 TCP_REFRESH_HIT/304 332 GET http://passets-cdn.pinterest.com/images/pidgets/bps1.png - DIRECT/124.40.42.16 image/png
    1359255719.783 131 192.168.1.111 TCP_REFRESH_HIT/304 332 GET http://passets-cdn.pinterest.com/images/pidgets/fpa1.png - DIRECT/124.40.42.16 image/png
    1359255719.868 0 192.168.1.111 TCP_IMS_HIT/304 274 GET http://badge.stumbleupon.com/badge/embed/5/? - NONE/- text/html

    • terlihat hit proxy yg cukup bagus. untuk youtube, kalo nggak salah udah bisa hit kok yg ipfire itu walaupun hit nya range. nah tinggal tambahkan acl di posting ini pada /var/ipfire/proxy/advanced/acls/include.acl, reload squid nya, dan lihat hasilnya.

      mohon maaf saya lambat reply, karena saya 3 hari sakit.. jadi nggak sempat periksa comment di blog. thanks,

  5. saya sudah coba tutorial ini, dengan menggunakan squid pada IP FIRE. tapi belum berhasil cache youtube nya. mohon clue nya mas fazar. thanks

  6. pertamax achhh…mantap dah emang makjoss bikinan mas udin aka ucok_karnadi…:thumbup:
    lebih bagus lagi penulis meminta ijin pada mas udin via ym/forum sebelum menulis tutorial hasil karya orang lain di blog nya :)
    trims

Leave a Reply

Alamat email Anda tidak akan dipublikasikan.


*