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.

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

106 Comments

  1. dudatino

    yuotube berubah static lagi tuh gan…gimana ada solusi baru gak??

    • fazar

      bisa pake storeurl yg sekarang ini, atau pake storeurl yg lama. silakan pilih sendiri. :D

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

  3. denny

    mas, cara nya bisa di bantu neubi nih udah cari di mbah google bingung  build ipfire dari soucecode

    • fazar

      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

        • fazar

          thanks pakbro atas pencerahannya.

          • Raden_cok

            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)

          • fazar

            nah ini baru oprekers sejati. jangan pernah menyerah untuk trial dan error – perjuangan selalu berbuah manis. sukses juga untuk masbro. :D

  4. denny

    mas, kalau instal readbackwards di ipfire bisa mas masih bingung

    • fazar

      nggak bisa.. install module perl kudu dilakukan pas melakukan build ipfire dari sourcecode.:)

  5. uyung_vankeeh

    Hiduuuup mang google…

    Dia ( mang google) ngerubah lagi struktur jaringannya, coba lihat record ngopreknya sekitar 4 hari yg lalu.

  6. Irfan Muslim

    mas.. nubitol mau tanya ni..

    kalo menonaktifkan cache youtube nya aja gmn  ya?

    saya pake mikrotik+proxy nya lusca_head

    thanks

    • fazar

      acl denyYT dstdomain .youtube.com
      cache deny denyYT

      • andri

        acl denyYT dstdomain .youtube.com
        cache deny denyYT
        perintah di atas di pasang dimana mas?

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

    • fazar

      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

  8. andika

    mas , kalo instal readbackwards di clearos gmn yah

    kok gagal trus y mas ,

    • fazar

      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

  9. noenk

    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…

  10. malik

    maaf mas
    kok gag bisa ya instal readbackwards di clearos

    tolong bantu y mas

    makasi

    info nya

Leave a Reply

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