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

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.

18 Komentar

  1. Mas Fazar, ini saya coba cek di cache.log ada error : WARNING: store_rewriter #5 (FD 60) exited
    Can’t call method “readline” on an undefined value at /etc/squid/storeurl.pl line 203, <> line 1. kira2 salahnya dimana yah.. tks sebelumnya

  2. mas fazar tks atas bantuannya… ipfire dengan squid2.7stable9 dah jalan dengan baik tapi.. maaf mas ada tapinya :) waktu saya tail -f /var/log/squid/access.log koq youtubenya nga hit yah.. padahal saya dah ikut arahan yang di atas.. dah pake storeurlnya mas ucok dan dah install redbackward

  3. mas, saya lagi coba install ipfire 2.13core67 saat install berjalan lancar dengan bawaan squid ipfire status web proxynya running tapi saat saya install squid 2.7stable9 yang saya download dari cahchebox status webproxynya jadi stopped, mohon bantuannya. tks

    • silakan tambahkan “acl all src all” di /var/ipfire/proxy/advanced/acls/include.acl
      kemungkinan akan ada error juga untuk masalah header_access, karena diperlukan patching file proxy.cgi

  4. Ass.wr.wb
    Salam kenal mas Fajar
    Mau tanya nih, kenapa patch game GrandChase dan elsword tidak mau jika proxy saya dalam keaadan aktif?
    Kalau proxy sy disable, baru patch game tsb lancar.

    Ditunggu penjelasannya ya?

    Tks.
    Wass.wr.wb

    • wss.wr.wb. iya ada beberapa teman yg melaporkan untuk patch grandchase dan elsword nggak mau jika proxynya aktif. sayangnya, ane implementasi proxy untuk lingkungan kantoran bukan gamecenter jadi nggak pernah sempat untuk melakukan kroscek dan pemeriksaan lebih jauh tentang hal ini. demikian. :)

      • Kalo pake strawberryperl portable bisa gak ya mas ?? karena drive C nya udah sesak, sy udah coba install versi standar tp gak bisa di ganti path ke drive selain C .. maaf ya mas fazar sy banyak nanya, nubie banged perkara beginian :)
        Thanks b4.

  5. untuk permasalahan udah HIT cachenya tpi audio dan video tidak sinkron itu pernah saya almai, solusinya terletak di os kita, itu di saya lo ya, lalukan aja cler cache pada web browser yg kita miliki, janagan lakukan clear cache di proxy ekternal kita sayang kan :D pissss, terima kasih mas syaifuddin atas storeurlnya yg sanagt bagus

  6. allow all bro, sya termasuk yg mencoba storeurl.pl dari mas syaifuddin / ucok baba, intinya BERHASIL udah pada hit, tpi ingat ya teman2 intinya HIT tidak langsung penuh, dalam artian sepotong-potong, karena ini dilakukan memang dari server youtube mereka yaitu melakukan split pada video mereka, intinya video yg 5 mnit 10 mnt, bahakan sampe yg 30 mnt bisa di cache dengan storeurl mas syaifudin, intinya di putar dulu sekali untuk melakaukan cache streamingnya, lalusetelah keduanya baru test dah di proxy kalian hasilnya maknyos alhamdulilllah HIT HIT HIT HIT HIT, LANGSUNG TES PUTAR 10 VIDEO SEKALIGUS YG UDAH HIT lancar, ini murni pake storeurl dari mas syaifuddin / ucok,

Leave a Reply

Alamat email Anda tidak akan dipublikasikan.


*