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.

25 Komentar

  1. salam kenal,
    mas, akhir2 ini (dari awal mei 2013) saya denger yutube balik lagi pake ID static. is that true?
    kalo iya berarti storeurl yg awal aja ya pakenya.
    thx mas.

    • sepertinya demikian (balik ke id statik). saya ujicoba dengan storeurl lama, dan it works! :)
      tapi sekedar saran, untuk menjaga kompatibilitas id statik atau dinamik, sebaiknya gunakan storeurl terbaru.

  2. mas fazar mau tanya lagi nich….untuk lusca head versi berapa yg cocok dengan squid 2.7 stable 9 ????
    sorry banyak nanya…..

    • lusca-head adalah pengembangan dari squid 2.7. jadi mas silakan pilih salah satu untuk digunakan : lusca-head atau squid-2.7STABLE9.

      • wadduuhhh jadi bingung nich…cara pilihnya gimana??…kan byk tutorial ttg install lusca..install squid 2.7 dulu lalu install luscahead…lalu edit file squid.conf di /etc/squid/squid.conf… apa benar itu mas????
        saya telah lakukan seperti itu dan edit aclnya seperti diatas…setelah di cek “sudo /usr/sbin/squid” muncul pesan seperti ini
        Squid Cache (Version LUSCA_FMI): Terminated abnormally.
        CPU Usage: 0.016 seconds = 0.016 user + 0.000 sys
        Maximum Resident Size: 6384 KB
        Page faults with physical i/o: 0
        dan di mozilla pesan seperti ini.”“THE PROXY SERVER IS REFUSING CONECTION”…mohon pencerahannya..mas fazar…
        saya memakai ubuntu 11.04 desktop…apa harus di ubuntu 11.04 server??/
        maklum mas masih newbie….

        • yg saya ketahui pada banyak tutorial yg beredar di internet, biasanya disarankan untuk menginstal binari squid 2.7 dulu (menggunakan apt-get, yum atau sejenisnya) mungkin tujuannya untuk memenuhi dependency packages (menginstal paket aplikasi yg dibutuhkan squid). squid yg sudah diinstal kemudian di hapus (remove/uninstall) kemudian baru di lanjutkan dengan instalasi lusca.

          proxy server refusing connection karena squid nya tidak jalan. coba periksa konfigurasi nya dengan mengetikkan “squid -k parse” tanpa tanda kutip. pastekan hasilnya kesini. good luck!

          • squid luscanya telah jalan setelah dicek dgn perintah
            /usr/local/squid/sbin/squid -d1
            muncul pesan seperti ini
            Rebuilding storage in /cache1 (DIRTY)
            2013/05/27 21:08:34| Using Least Load store dir selection
            2013/05/27 21:08:34| chdir: /usr/local/squid/var/cache: (2) No such file or directory
            2013/05/27 21:08:34| Current Directory is /home/prince/LUSCA_HEAD-r14809
            2013/05/27 21:08:34| Loaded Icons.
            2013/05/27 21:08:34| Accepting transparently proxied HTTP connections at 0.0.0.0, port 8080, FD 21.
            2013/05/27 21:08:34| WCCP Disabled.
            2013/05/27 21:08:34| Ready to serve requests.
            2013/05/27 21:08:34| WARNING: store_rewriter #3 (FD 9) exited
            2013/05/27 21:08:34| WARNING: store_rewriter #2 (FD 8) exited
            2013/05/27 21:08:34| WARNING: store_rewriter #1 (FD 7) exited
            2013/05/27 21:08:34| WARNING: store_rewriter #4 (FD 10) exited
            2013/05/27 21:08:34| Too few store_rewriter processes are running
            FATAL: The store_rewriter helpers are crashing too rapidly, need help!
            apa yg salah pada store_rewriter ??? storeurlnya saya pake mas fazar punya…
            kenapa cache_dir nya ada pesan DIRTY a pakah ada yg salah???
            saya memakai lusca_head r14809…
            mohon BAntuannya mas sdh 2 hari nga tidur” gara” squid lusca…

            harus diganti dengan storeurl.pl terbaru squid sdh jalan tapi kenapa masih ada pesan
            Rebuilding storage in /cache1 (DIRTY)
            apa pesan itu diabaikan saja???..atau ada solusi dri mas fazar…
            lusca saya telah jalan di port 3128 tapi setelah lihat access lognya buka youtube TCP MISS..begitu pula dengan membuka halaman yg lain..ttp tcp miss…..solusi nya apa mas fazar tolong pencerahannya…
            mudah-mudahan di balas
            thx b4…

          • ada 2 comment dari masbro. ane gabung jadi satu aja biar enak. :)

            sepertinya storeurl nya crash, hal ini bisa dikarenakan 2 hal : belum di chmod atau ada kesalahan dalam script / salah copas. masbro pake ubuntu kan? kalo demikian coba hapus dulu storeurl.pl yg masbro gunakan, matikan squid, kemudian ikuti step berikut di ssh / shell console:

            # apt-get update
            # apt-get install libfile-readbackwards-perl
            # cd /etc/squid ; wget http://tempat-sampah.googlecode.com/svn/storeurl.pl
            # chmod +x /etc/squid/storeurl.pl

            periksa kembali konfigurasi squid dengan mengetikkan “squid -k parse” dan jika tidak ada keluar pesan error, lanjutkan dengan start squid. tcp_miss akan banyak muncul jika cache squid belum terisi. biarkan squid/lusca berjalan seminggu kemudian lihat bagaimana kondisi log nya, saya yakin akan ada banyak tcp_hit. untuk cache yg dirty akan “dibersihkan” pada saat proses reboot. demikian dan selamat mengopreks.

      • mas,.,saya sdh install squid 2.7 di ubuntu 11.04 desktop..cek di client sdh jalan…tapi masalahnya setelah saya install lusca head setelah cek di client tulisan di mozilla kira” seperti ini “THE PROXY SERVER IS REFUSING CONECTION”..kira” apa masalahnya mas.???….tolong bantuannya…
        mas ada nga tutornya yg lengkap??/ jika ada brp harganya?? emaill aja (vbudikasi@yahoo.com atau sms 085399593456)

        • tambahkan konfigurasi untuk mengizinkan local network melewati proxy.

          acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
          acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
          acl localnet src 192.168.0.0/16 # RFC1918 possible internal network

          http_access allow localnet

  3. mas fazar mo tanya ??

    Can’t locate File/ReadBackwards.pm in @INC (@INC contains: C:/squid/lib .) at st
    oreurl.pl line 241.
    BEGIN failed–compilation aborted at storeurl.pl line 241.
    klo da error seperti ini knpa ya??

    mohon percerahannya

  4. mas fazar mo tanya..
    cara untuk menggunakan modul storeurl dan ReadBackwards.pm
    soalnya saya masih blom ngerti..
    mas mohon pencerahannya..

      • mas, kalau mau cache https dimana mas kalau menggunakan lusca ?
        terus antara nginx dengan lusca, yang mana lebih hebat cache youtube mas ?

        • https belum dapat dicache pada squid atau turunannya (lusca).
          bagusan mana antara nginx dengan lusca untuk caching squid? jawabannya adalah tergantung konfigurasi yang mas gunakan. :)

          fyi, nginx adalah webserver, yang bukan forward proxy seperti halnya lusca (walaupun nginx juga bisa berfungsi sebagai reverse proxy).

  5. pelnggan dtng ..’maaf y youtube kami blokir’selesai deh mslah.cache youtube dh bejubel di lusca tapi ngk pernah dibuka2 lagi.slulu video baru yg di akses .lusca sibuk cache,gamer teriak2.ada lagi video baru ..ada lagi dan ada lagiii=maaf mbak,mas warnet ini ngk bisa buka youtube gimana masih mau main? hasil=para gamer..! sy nunggu pc ini saya pc itu..sy yg duluan

  6. mas fazar.. udah di instal mas.. tapi udah OK skarang mas ternyata errornya ada disini my $ref_log = File::ReadBackwards->new(‘/var/log/squid/yt.log’); file yt.log nga ada di folder squid jadi saya ganti sama access.log dan makyoss semua berjalan lancar.. yutub bisa di HIT HIT n HIT…
    tks mas atas pencerahannya..

Leave a Reply

Alamat email Anda tidak akan dipublikasikan.


*