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.
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®ion=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…!!)
Youtube juga mengimplementasikan url redirection yang semakin mempersulit bagi squid untuk melakukan cache video-video youtube.
Video kegalauan youtube di Facebook :)
Credits to Forum Belajar Bareng – video by Timunx Spectra
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 :
https://code.google.com/p/tempat-sampah/source/browse/storeurl.pl
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. :)
yuotube berubah static lagi tuh gan…gimana ada solusi baru gak??
bisa pake storeurl yg sekarang ini, atau pake storeurl yg lama. silakan pilih sendiri. :D
Sakan kenal gan.
Mantab postingannya.
Ud kutak-katik sampe down storeurl.pl bang ucok, tetap tidak mau tercache.
Setelah baca artikel anda, sekarang sy sudah paham.
Tks ilmunya gan.
mas, cara nya bisa di bantu neubi nih udah cari di mbah google bingung build ipfire dari soucecode
http://wiki.ipfire.org/en/development/build
wget http://search.cpan.org/CPAN/authors/id/U/UR/URI/File-ReadBackwards-1.05.tar.gz
tar xzvf File-ReadBackwards-1.05.tar.gz
cd File-ReadBackwards-1.05
mkdir /usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/File
cp ReadBackwards.pm /usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/File
chmod -R 755 /usr/lib/perl5/site_perl/5.12.3/i586-linux-thread-multi/File/ReadBackwards.pm
thanks pakbro atas pencerahannya.
Mas @Fazar.. salam kenal saya masih Newbie masalah server. baru 2 minggu mengikuti bermacam sumber tapi memang rezeki saya lagi baik. tanpa dari sumber manapun dan tanpa mbahnya ReadBackwards squid saya bisa ngecache yutube mas…. hasil pengen tahu dan pengen belajar buat server berbuah hasil mas… saya bukan IT dan juga bukan ustad…. ALHAMDULILLAH SUKSEK BESAR 100% WORK mas fazar..Thank ya mas sukses selalu@@@@.. (Squid conf dan storeurl gado-gado dari 25 blog saya kumpuli jadi satu)
nah ini baru oprekers sejati. jangan pernah menyerah untuk trial dan error – perjuangan selalu berbuah manis. sukses juga untuk masbro. :D
mas, kalau instal readbackwards di ipfire bisa mas masih bingung
nggak bisa.. install module perl kudu dilakukan pas melakukan build ipfire dari sourcecode.:)
Hiduuuup mang google…
Dia ( mang google) ngerubah lagi struktur jaringannya, coba lihat record ngopreknya sekitar 4 hari yg lalu.
mas.. nubitol mau tanya ni..
kalo menonaktifkan cache youtube nya aja gmn ya?
saya pake mikrotik+proxy nya lusca_head
thanks
acl denyYT dstdomain .youtube.com
cache deny denyYT
acl denyYT dstdomain .youtube.com
cache deny denyYT
perintah di atas di pasang dimana mas?
bisa hit..tapi setelah play video youtube ke 2… audio dari video youtube sebelumnya yg muncul di video youtube selanjutnya alis di video youtube ke 2 ga matching antara audio dan video.
ya. permasalahan baru muncul lagi, youtube melakukan streaming terpisah untuk video dan audio nya, sehingga kadang bisa nggak matching video sama suara yg keluar. kita tunggu aja update terbaru untuk storeurl nya. :D
mas , kalo instal readbackwards di clearos gmn yah
kok gagal trus y mas ,
saya kurang native dengan clearos, tapi boleh dicoba step berikut (dengan asumsi perl sudah terinstal) :
# perl -MCPAN -e shell
cpan> install File::ReadBackwards
atau download modulnya
# wget http://search.cpan.org/CPAN/authors/id/U/UR/URI/File-ReadBackwards-1.05.tar.gz
# tar -zxvf File-ReadBackwards-1.05.tar.gz
# cd File-ReadBackwards-1.05
# perl Makefile.PL
# make
# make test
# make install
Salam Kenal brow..
Saya udah coba storeurl dari om karnadi sesuai arahan mas fajar diatas..tapi youtube di tempat ane masih tcp_miss…. apakah ada yang sudah tcp_hit ?
terima kasih…
maaf mas
kok gag bisa ya instal readbackwards di clearos
tolong bantu y mas
makasi
info nya