Lompat ke konten Lompat ke sidebar Lompat ke footer

Video YouTube Tidak Dapat Di Cache Squid

Saya sempat memposting tentang cara memaksa agar squid proxy memaksa agar video di Youtube dapat di cache dengan baik – silakan cek posting dynamic content caching. Akan tetapi sejak awal Maret 2013, sepertinya teknik tersebut sudah tidak dapat digunakan untuk melakukan cache video youtube. Bagaimana hal ini bisa terjadi?
!! Silakan cek update storeurl terbaru di bagian bawah artikel ini !!
Story behind YouTube video cache
Video YouTube memiliki sifat sebagai dynamic content (konten dinamik) walaupun pada faktanya video yang ditampilkan di YouTube dengan resolusi apapun adalah object web yang statik. Dikatakan content dynamic karena setiap video yang ada di YouTube memerlukan beberapa parameter tertentu (video ID, itag, range, dan sebagainya) untuk kemudian di eksekusi oleh server lewat perantaraan server side scripting. Namun juga dapat dikatakan statik karena video yang di host dan di distribusikan oleh CDN adalah object yang sama persis dengan object yang di push dari server asalnya.
yt-fail
Konsep dibelakang dynamic content caching adalah menyimpan (kedalam cache) object web yang di generate secara dinamik oleh server pada saat diakses pertama kali. Pada saat akses selanjutnya, user tidak lagi mengambil object tersebut ke internet, namun cukup mengambilnya dari cache lokal, sehingga bandwidth dapat dihemat, dan konten/object dapat disampaikan dengan kecepatan penuh – full speed.
Setidaknya ada 2 metode duplikasi video YouTube yang di implementasikan dengan proxy squid, pertama menyimpan video kedalam direktori cache squid itu sendiri, dan yang kedua adalah menggunakan perantara aplikasi ketiga – misalnya apache, nginx, dan sebagainya untuk menyimpan video-video tersebut kedalam direktori lain. Kedua metode ini pada umumnya menggunakan fitur storeurl_rewrite_program – fitur pada squid 2.7.
Working on Youtube’s videos caching
Metode yang paling banyak digunakan untuk melakukan caching video Youtube adalah metode yang fenomenal yang dipopulerkan oleh mas Chuddy Fernandez. Eyang Chuddy menggunakan fitur  storeurl untuk menduplikasi video YouTube kedalam cache_dir squid. Silakan baca tutorial beliau disini.
Pada awalnya, setiap video di youtube memiliki video id yang statik. Tidak peduli apakah video tersebut non-range (full video) atau video yang telah dipotong-potong (ranged).  Setiap video atau potongan video tersebut di host oleh server CDN yang tersebar diseluruh dunia, sehingga bisa saja pada ranged video setiap potongan videonya di hosting oleh server CDN yang berbeda.
Ide youtube video caching adalah melakukan caching yang agresif untuk video-video atau potongan video yang sering diakses atau populer.
Pada squid versi 2.7 diperkenalkan konsep storeurl rewrite yang dibahas tadi. storeurl rewrite memungkinkan kita untuk memanipulasi / me-rewrite URL yang diakses oleh klien squid sebelum menyimpan atau mengakses object didalam cache squid.
How it works
Contohnya saya mengakses sebuah video youtube, dan secara otomatis youtube menanayangkan sebuah video dengan URL berikut (ini cuman contoh… bukan URL beneran.. hehehe)
http://r17—sn-npo7en7r.c.youtube.com/videoplayback?id=OkjnGF45&itag=34&ip=10.20.30.254&region=id&signature=98JLJKDBQDAKHJHH553HKK4H432M3NB54J32LN42K455503.2KNAFAF5AF&sver=2&expire=87654321445&key=yt4&ipbits=0&range=1-878676
Sebagian orang mungkin akan bingung melihat URL tersebut – karena cukup panjang dan memiliki banyak parameter (id, itag, region, dsb), namun tahukah anda, sebenarnya untuk mengakses video tersebut kita cukup mendefinisikan beberapa parameter saja.
Untuk video non-range, parameter yang diperlukan hanya id dan itag. Sedangkan untuk video ranged/partial, parameter yang diperlukan hanya id, itag, dan range. Parameter lainnya hanya bersifat tracking, penentuan signature, dan sebagainya.
Quote dari eyang Chuddy :
UPDATE: &range suppose to be partial contents… you may redirect them without “&range=xxx-xxx” to cache the whole content
Sehingga dengan bantuan storeurl rewriter, kita dapat menyederhanakan URL tersebut.
Untuk video non-range :
http://r17—sn-npo7en7r.c.youtube.com/videoplayback?id=OkjnGF45&itag=34
Untuk video range :
http://r17—sn-npo7en7r.c.youtube.com/videoplayback?id=OkjnGF45&itag=34&range=1-878676
Lebih pendek bukan? Selain itu, url pendek seperti ini lebih ‘cache-friendly’ alias lebih “enak” untuk di cache oleh squid. Video yang hit akan tampak seperti ini pada di squid access.log
1362105243.589  17760 10.20.30.254 TCP_HIT/200 156611767 GET http://r17—sn-npo7en7r.c.youtube.com/videoplayback? – NONE/- video/mp4
Teknik seperti ini bertahan sampai awal maret tahun 2013. :)
YouTube cache : March 2013 until today
Mimpi buruk datang pada awal Maret tahun 2013 – Youtube merubah coding mereka! Hal ini membuat para administrator / pengelola squid proxy menjadi galau, dan frustasi, ada yang menjadi linglung, insomnia, susah tidur, lupa cebok, berhalusinasi, ingin coli terus, kehilangan fokus dan bahkan ada yang ingin gantung diri. Apalagi banyak video youtube yang sedang booming, sebut saja X-Factor (Fatiiinn… I love you!! ~~), Indonesia Mencari Bakat, video harlem shake, video bokep, dan banyak lagi.
Video id (atau parameter sejenisnya) yang awalnya bersifat statik dirubah menjadi dinamik alias berubah-ubah. Alhasil, hampir semua video youtube tidak dapat di cache oleh squid. Jika anda menggunakan storeurl yang seperti mirip eyang Chuddy, maka anda mungkin akan menemui video yang dibuka tidak sesuai dengan video yang di inginkan, karena video id yang tertukar, atau hal lainnya.
Contoh kegalauan di Facebook yang lucu dan unik .. hehehe. (ane juga galau kok… sama seperti anda-anda semua, mari kita bergalau riaaa…!!)
galau-youtube
Youtube juga mengimplementasikan url redirection yang semakin mempersulit bagi squid untuk melakukan cache video-video youtube.

 
 Kesimpulan
Untuk sementara, sangat sulit untuk melakukan caching video Youtube oleh squid. Belum ada teknik yang di publikasikan yang benar-benar efisien untuk melakukan hal tersebut. :D
Jadi, bagaimana cara mengatasi masalah ini? Jawabannya : silakan menunggu, karena belum ada storeurl yang sip untuk hal ini. hehehehe…
New Update!! New Update!!
Mas ucok_karnadi pada posting dibawah menambahkan storeurl terbaru untuk caching video Youtube. Silakan download di :
Yang perlu dicatat adalah untuk menggunakan storeurl tersebut anda harus menginstal modul ReadBackwards untuk Perl. Silakan download di : http://search.cpan.org/~uri/File-ReadBackwards-1.05/ReadBackwards.pm
Untuk pemakai Ubuntu, anda juga dapat menginstal modul ini menggunakan apt-get.
nuff said. :)

sumber disini