panduan refresh pattern

18
fazar.net digital lifestyle and inspiration web: http://www.fazar.net/ - email : [email protected] Squid Cache : Optimising Web Delivery Panduan Refresh Pattern Squid Cache 2.7

Upload: cinta-yang-haq

Post on 29-Dec-2015

51 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

Squid Cache : Optimising Web Delivery

Panduan Refresh Pattern

Squid Cache 2.7

Page 2: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

Latar Belakang Tulisan

Squid cache adalah proxy daemon yang paling popular di Indonesia – bahkan didunia – yang sering

digunakan dengan tujuan optimasi penyampaian konten internet pada gamecenter, warnet, kantor,

perusahaan besar, bahkan sampai ke tingkat ISP (Internet Service Provider).

Tujuan utama penggunaan squid tidak lain untuk mengimprovisasi akses internet dalam kondisi

keterbatasan bandwidth yang tersedia. Dengan memasang squid dalam sebuah jaringan internet

diharapkan terjadi penghematan bandwidth sebesar 30 – 60% - secara signifikan browsing akan terasa

menjadi lebih cepat.

Akan tetapi, terkadang “kekuatan” yang ada didalam squid cache belum sepenuhnya kita gunakan.

Sebagaimana yang kita ketahui, squid cache sepenuhnya dikendalikan oleh sebuah file konfigurasi

(biasanya terletak di /etc/squid.conf) yang didalamnya banyak tag dan memiliki fungsi-fungsi

tersendiri.

Salah satu tag terpenting dalam squid.conf adalah refresh_pattern.

Tulisan ini saya buat dengan dasar keinginan untuk berbagi sedikit pengetahuan tentang

refresh_pattern yang terdapat didalam konfigurasi squid cache. Banyak konfigurasi squid cache yang

bisa kita ambil dari internet, namun yang saya sayangkan adalah kebanyakan squid.tersebut terdapat

kesalahan penulisan refresh_pattern – yang mungkin di karenakan keterbatasan literatur yang

menjelaskan fungsi dan tujuan dari refresh_pattern.

Letak kesulitan penulisan refresh_pattern adalah opsi untuk menentukan regular expression (regex).

Mempelajari regex akan sangat membantu penulisan refresh_pattern yang efisien dan efektif. Jangan

ragu untuk membeli dan mempelajari buku-buku tentang regex – agar anda bisa memiliki

refresh_pattern yang “mumpuni”.

refresh_pattern menentukan secara signifikan angka HIT yang akan didapat oleh squid.

Oleh karena itu, penulisan yang tepat dikombinasi dengan tuning beberapa konfigurasi lainnya dapat

membuat squid anda mencapai performa terbaiknya.

Dalam tulisan ini saya menggunakan squid 2.7 dan Lusca (yang masih berbasis squid 2.7), dan ada

beberapa istilah yang akan sering digunakan, antara lain :

Page 3: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

- Object

Object adalah berkas / file yang diambil oleh squid dari internet, yang kemudian disimpan

didalam direktori cache yang ditentukan di dalam squid.conf (tag : cache_dir)

- Cache

Cache dalam bahasa Indonesia memiliki arti harfiah sebagai “tembolok”. Tembolok / cache

squid dapat diumpamakan sebagai tempat penyimpanan sementara object-object yang diambil

squid dari internet.

- Fresh

Kondisi dimana object didalam squid masih “segar” dan belum kadaluarsa. Nilai kadaluarsa

suatu object biasanya disertakan oleh webserver saat object tersebut diambil dari internet,

namun nilai kadaluarsa ini bisa dimanipulasi oleh refresh_pattern.

- Stale

Stale adalah kondisi dimana object sudah kadaluarsa dan seharusnya di ambil oleh browser

(firefox, opera, internet explorer, dll) langsung dari internet. Sebagaimana dijelaskan

sebelumnya, nilai kapan kadaluarsanya suatu object dapat dimanipulasi dan ditentukan oleh

refresh_pattern.

Object stale didalam cache akan secara otomatis di hapus (purge) oleh squid berdasarkan

ketentuan dari refresh_pattern.

Dalam tulisan ini akan saya berikan beberapa tips dan peringatan. Setiap tips akan ditandai dengan

gambar ceklist. Sedangkan peringatan akan ditandai dengan gambar tanda seru.

Page 4: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

refresh_pattern : Apa dan Kenapa?

Fungsi utama refresh_pattern adalah mengatur bagaimana squid akan “menangani” object yang

berada didalam cache.

Dan sebagaimana yang dijelaskan sebelumnya, dengan sedikit trik, kita dapat menggunakan

refresh_pattern, untuk menentukan atau memanipulasi validitas object (fresh atau stale) yang ada

didalam cache squid sehingga nilai HIT dapat menjadi lebih maksimal.

Sebelum mendalami refresh_pattern lebih lanjut, kita sebaiknya mengetahui bagaimanakah cara

validitas object di periksa oleh squid.

Browser (firefox, opera, dan sebagainya) sebenarnya juga memiliki cache tersendiri, dan biasanya

menggunakan browser metode tertentu untuk memeriksa validitas object didalam cache mereka

dengan mengirimkan request tertentu ke webserver (langsung ke internet).

Bagaimana proses terjadinya “penampakan” object didalam browser?

Perhatikan ilustrasi berikut dengan cermat.

Pada saat client memasukkan yahoo.com kedalam address bar browsernya dan menekan tombol

“enter”, maka browser akan mengirimkan HTTP request ke server yahoo.com meminta akses

halaman utama website yahoo.com.

Webserver yahoo.com menerima HTTP request tersebut, dan mengirimkan HTTP response yang

berisi informasi tentang halaman utama website yahoo.com.

Response ini dengan segera diterjemahkan oleh browser dan kemudian browser akan menampilkan

halaman utama website yahoo.com.

Page 5: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

HTTP request dan HTTP response akan dikirimkan setiap terjadi permintaan sebuah object.

Bayangkan, halaman website yahoo.com mungkin memiliki puluhan gambar, teks dan beberapa

animasi flash. Setiap file gambar, teks dan animasi tersebut pada dasarnya di request ke webserver

satu per satu.

Akan tetapi koneksi internet kita sudah cukup cepat, oleh karena itu proses pengiriman HTTP request

dan HTTP response juga terjadi cukup cepat. Hanya perlu beberapa detik menampilkan sebuah

halaman website.

Wuzzz… wuzzzz…… wuzzzzz….!!!

Teknis HTTP request (HEAD) dan HTTP response adalah sebagai berikut :

Object : http://www.google.co.id/images/srpr/logo3w.png

Sending request:

HEAD / images/srpr/logo3w.png HTTP/1.1

Host: www.google.co.id

User-Agent: Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20120201 Firefox/10.0.1

Connection: close

Receiving Header:

HTTP/1.1 200 OK

Content-Type: image/png

Content-Length: 7007

Last-Modified: Fri, 05 Aug 2011 02:40:26 GMT

Date: Fri, 17 Feb 2012 07:20:57 GMT

Expires: Fri, 17 Feb 2012 07:20:57 GMT <- waktu object akan kadaluarsa / stale

Connection: close

Untuk mempelajari HTTP header field, silakan merujuk ke :

HTTP request ada beberapa jenis, misalnya HEAD, GET, dan sebagainya namun kita tidak

membahasnya disini. Untuk mempelajarinya lebih lanjut silakan berkunjung ke laman berikut :

- http://en.wikipedia.org/wiki/List_of_HTTP_header_fields

- http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html

Quick Tips :

Untuk melakukan HTTP request dan response secara manual, anda dapat menggunakan

“squidclient”. Dari konsol linux anda ketikkan squidclient –m <tipe request> <url object>

Contoh : squidclient –m HEAD http://www.google.co.id/images/srpr/logo3w.png

Page 6: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

Kesimpulan :

refresh_pattern adalah tag dalam squid.conf yang berfungsi menentukan usia object didalam cache

dan dengan melakukan beberapa tuning, refresh_pattern dapat meng-override (mengganti atau

memanipulasi) validitas object didalam cache.

Sintaks dan Opsi Pada refresh_pattern

Oke.. kita lanjut ke penjelasan sintaks atau tata cara penulisan refresh_pattern.

refresh_pattern [-i] <regular expression> min percentage max [tuning options]

Keterangan sintaks :

- -i : menghilangkan case sensitive dari regex. Jika tidak menggunakan –i maka regex akan

bersifat cAsE seNsiTivE (memperhatikan huruf kecil dan huruf kapital).

- Regular expression (regex) : regex digunakan untuk mencocokan (matching) string teks atau

pola karakter tertentu dari sebuah URL. Dari sini ditentukan bagaimana object akan

ditangani sesuai dengan URL object yang bersangkutan.

- min : kita dapat menentukan usia fresh object (dalam satuan menit) suatu object jika object

tersebut tidak ditentukan waktu kadaluarsanya secara eksplisit saat validasi.

Nilai t-min defaultnya adalah 0. Tujuannya untuk menghindari permasalahan saat mengakses

web yang dinamik. Namun, kita dapat meninggikan nilainya apabila yakin object yang

diakses bersifat statis.

Warning :

Perlu dicatat, penggunaan regex yang terlalu kompleks didalam refresh_pattern akan

menambah beban squid, karena squid akan memparsing url setiap object berdasarkan

regex yang ada di refresh_pattern.

Jadi adalah sebuah kesalahpahaman kalau menganggap semakin banyak regex maka

squid akan bertambah bagus. Yang terjadi adalah kebalikannya – page load akan lebih

lambat walaupun HIT squid tinggi.

Page 7: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

- percentage : Persentasi lm-factor (last-modified factor). lm-factor adalah rasio usia object

didalam cache dengan periode pembuatan / modifikasi object dari server asal dalam bentuk

persentasi.

Contoh :

Jika object sudah berada selama 1.800 menit didalam cache, sedangkan object dibuat atau

dimodifikasi oleh server asalnya selama 10.000 menit yang lalu, maka lm-factor nya adalah

1.800 / 10.000 = 18%.

- max : batas atas maksimum (dalam menit) object didalam cache dianggap FRESH jika object

tersebut tidak ditentukan waktu kadaluarsanya.

Contoh Implementasi refresh_pattern

Berikut ini adalah beberapa contoh implementasi refresh_pattern. Contoh ini juga memberikan

penjelasan dan gambaran lebih lanjut tentang nilai min, max, dan lm-factor.

Contoh 1 :

refresh_pattern -i ^http://contoh.com/test.jpg$ 0 60% 1440

Kondisi :

Klien merequest gambar http://contoh.com/test.jpg 1 jam yang lalu (object berumur 1 jam didalam

cache).

Gambar tersebut dibuat atau dimodifikasi oleh webserver 6 jam yang lalu, namun tidak terdapat

informasi EXPIRE pada headernya.

Maka :

- Usia object adalah 6 – 1 = 5 Jam

- Response age adalah 1 jam (selisih object berada didalam cache dikurangi waktu pembuatan

5 – 6 = -1)

- lm-factor 1/5 = 0,2 (20%)

Page 8: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

Perhitungan berikutnya :

- Response age 60 menit, berada dibawah max 1440 menit, tidak dapat menjadi acuan karena

nilainya terlalu jauh.

- lm-factor 20%, berada dibawah 60%, kesimpulannya object masih FRESH

Untuk menghitung kapan object akan expire :

Usia object 5 jam dan persentasi 60%, maka (5x60)/100 = 3 Jam dari request terakhir. Sehingga

object dinyatakan expire 2 jam yang akan datang. STALE jika melewati 1440 menit.

Contoh 2 :

refresh_pattern -i \.jpg$ 1440 20% 10080

Jika tidak terdapat informasi expire pada object dengan ekstensi .jpg atau .JPG, maka :

o Jika usia object (seberapa lama object berada didalam cache) kurang dari 1440 menit,

maka object dianggap FRESH.

o Jika usia object lebih dari 10080 menit, maka object dianggap STALE dan squid akan

mengambil langsung object ke webserver.

o Jika usia object antara nilai min dan max, maka lm-factor akan menentukan apakah

object fresh atau stale. Jika lm-factor < 20% maka object dianggap FRESH,

sedangkan jika lm-factor > 20% maka object dianggap STALE.

Silakan dipelajari lebih lanjut dan dimengerti sebelum melanjutkan ke topik yang lebih jauh.

Quick Tips :

Pelajarilah regex lebih dalam untuk menghasilkan refresh_pattern yang efisien dan optimal.

Page 9: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

Opsi-Opsi Tuning refresh_pattern

Opsi tuning refresh_pattern berikut ini saya ambil berdasarkan konfigurasi squid 2.7 dan lusca-head.

Opsi tuning dituliskan sesudah nilai min, max dan lm-factor ditentukan.

refresh_pattern [-i] <regular expression> min percentage max [tuning options]

Berikut adalah opsi tuning yang dapat kita gunakan :

override-expire

Opsi ini membuat squid mengabaikan header EXPIRE yang dikirimkan webserver. Hal ini memaksa

berlakunya nilai min, persentasi, dan max walaupun server sudah MENENTUKAN WAKTU

EXPIRE object didalam HTTP response-nya.

override-lastmod

Opsi ini mengabaikan header last modified date (waktu modifikasi terakhir) yang dikirimkan

webserver. Squid akan menganggap object masih valid sampai min tercapai walaupun object pada

server SUDAH DIMODIFIKASI. Untuk memaksa mengambil object yang baru, browser dapat

menggunakan force reload (mengirim HTTP request dengan No-Cache). Opsi ini tidak berguna jika

kita memberikan nilai 0 pada min.

reload-into-ims

Mengubah request no-cache request klien (force reload) menjadi request If-Modified-Since.

Tujuannya adalah hanya melakukan validasi ulang terhadap object. Jika object telah dimodifikasi

maka squid akan mengambil object dari internet, jika tidak maka squid akan menyampaikan object

dari dalam cache ke klien. Opsi ini hanya berguna jika server mengirimkan response Last-Modified.

ignore-reload

Saat klien melakukan reload atau force reload, request akan dilakukan seperti biasa (tanpa mengirim

no-cache request)

ignore-no-cache

Saat melakukan validasi object terkadang terdapat response Pragma: no-cache atau Cache-Control :

no-cache yang mencegah object di disimpan dalam cache. Opsi ini mengabaikan respon tersebut, dan

membuat object akan tetap disimpan kedalam cache.

Page 10: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

ignore-no-store

Mirip seperti diatas, tapi opsi ini akan mengabaikan response pragma dan cache-control no-store. no-

store pada header menandakan bahwa object bersangkutan sebenarnya tidak boleh disimpan.

ignore-must-revalidate

Terkadang server mengirim response Cache-Control: must-revalidate yang memaksa agar object

harus di validasi saat direquest ulang. Opsi ini akan mengabaikan Cache-Control: must-revalidate, dan

akan memvalidasi object berdasarkan nilai min.

ignore-private

Sama seperti diatas, squid akan mengabaikan response cache-control private. Cache-control = Private

pada header menandakan object memiliki informasi privat atau data yang sensitive (rahasia).

ignore-auth

Opsi ini memaksa squid mengabaikan response otorisasi Cache-control: public

Pada Lusca terdapat beberapa opsi tambahan :

stale-while-revalidate=NN

Squid akan melakukan validasi terus menerus jika object tidak kadaluarsa kurang dari NN menit. Oia..

secara default, squid memiliki default interval validasi 120 menit.

ignore-stale-while-revalidate

Terkadang server mengirim response cache-control= stale-while-revalidate=NN, opsi ini akan

memaksa squid mencueki hal tersebut. Biasanya dikombinasi dengan stale-while-revalidate=NN pada

refresh_pattern untuk menentukan waktu revalidate.

max-stale=NN

Menentukan waktu terlama object stale (busuk) yang tersimpan didalam cache. Object stale akan

dihapus apabila melewati max-stale, walaupun nilai max lebih tinggi dari ini. Nilai max-stale

didefinisikan dalam bilangan menit.

negative-ttl=NN

Mengganti parameter negative_ttl secara global untuk pattern URL yang sesuai. Tag negative_ttl

berfungsi untuk menentukan seberapa lama halaman request yang gagal (404 Not Found atau

Connection Refused) akan di cache. Satuan yang digunakan adalah detik.

Page 11: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

store-stale

Opsi ini mengijinkan squid untuk menyimpan dari server yang tidak memiliki informasi validitas

eksplisit termasuk object yang sudah stale.

Secara umum gambaran kondisi object yang fresh dan stale adalah sebagai berikut :

STALE jika usia object telah melewati waktu expire dari HTTP response.

FRESH jika waktu expire masih belum terlewati.

STALE jika response age telah melewati nilai max.

FRESH jika lm-factor kurang dari persentasi %.

FRESH jika lm-factor kurang dari min.

Selain penjelasan diatas, object dianggap STALE.

Persiapan Sebelum Menentukan refresh_pattern

Sebelum menyusun refresh_pattern pada file squid.conf ada beberapa hal yang harus diperhatikan,

antara lain :

1. Kondisi klien yang dilayani oleh squid.

Jika klien yang dilayani squid adalah warnet atau wifi hotspot, maka akan lebih efektif jika

squid di setting untuk melakukan object caching yang ukurannya tidak terlalu besar.

Tujuannya adalah memfokuskan HIT pada object yang sering diakses seperti gambar,

javascripts, css dan sejenisnya.

Berbeda jika klien yang dilayani squid adalah sebuah gamecenter. Pada gamecenter fokus

HIT ditujukan untuk melakukan object caching yang ukurannya besar seperti patch pada

game-game online.

Bagaimana untuk warnet yang sekaligus dipakai untuk gamecenter? Fokus HIT adalah

object-object kecil dan besar. Untuk mengurangi network load, bisa dilakukan load balancing

menggunakan 2 atau lebih line internet.

Page 12: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

Untuk klien perkantoran kecil atau Small Office Home Office (SOHO), squid akan lebih

efisien digunakan untuk content caching file-file kecil (seperti pada warnet) kemudian di

diimplementasikan menggunakan content filtering (seperti blocking iklan dan situs-situs

tertentu) serta pembuatan access control list untuk mengendalikan kapan klien bisa browsing

secara normal dan kapan akses browsing akan diblokir secara total.

Bagaimana squid untuk kelas perusahaan besar atau enterprise yang menggunakan akses

internet secara masif dengan jumlah klien lebih dari 100 users atau bahkan perusahaan sekelas

ISP? Untuk kasus seperti ini idealnya squid berfokus untuk content caching object besar dan

kecil serta di tweak menggunakan dynamic content caching (Youtube, Vimeo, dan lain-lain).

2. Pola dan kebiasaan browsing klien

Perlu diperhatikan adalah tujuan umum klien saat melakukan aktivitas browsing. Misalnya

untuk kalangan mahasiswa lebih efisien jika squid melakukan caching google, facebook, atau

wordpress, ketimbang melakukan caching situs-situs berita.

Perlukah melakukan caching konten dinamik?

Saya banyak melihat beberapa pengguna squid yang berusaha “mati-matian” mengusahakan HIT

terhadap dynamic content seperti video youtube atau object yang di host oleh content delivery

network (CDN). Apakah hal tersebut penting?

Menurut saya, semua harus dilihat berdasarkan scope klien yang dilayani squid. Untuk klien yang

jumlahnya sedikit dan jarang mengakses youtube (seperti halnya lingkungan kantor), akan lebih

efisien jika prioritas HIT adalah konten-konten web pada umumnya seperti gambar, javascript, css,

atau sejenisnya. Daripada mengorbankan resource yang lebih besar untuk menjalankan beberapa

redirector dan memparsing regex yang rumit untuk mendapatkan HIT yang tinggi untuk dynamic

content.

Lain halnya jika klien yang dilayani squid jumlahnya besar, seperti pada RT/RW net atau ISP,

caching dynamic content bisa saja dilakukan, karena ada kemungkinan yang signifikan object akan di

HIT. Misalnya pada saat sebuah video di youtube booming, maka klien akan beramai-ramai

mengunjungi video tersebut.

Page 13: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

Oke… cukup untuk “intro” implementasi refresh_pattern. Sebelum menambahkan refresh_pattern

lainnya, saya sangat merekomendasikan menggunakan refresh_pattern default squid, setelah itu baru

ditambahkan satu per satu refresh_pattern tambahan. Periksa HIT ratio setiap kali kita menambahkan

refersh_pattern baru.

Berikut adalah refresh_pattern default dari Lusca yang dapat digunakan untuk memulai penyusunan

refresh_pattern lebih lanjut :

refresh_pattern ^ftp: 1440 20% 10080

refresh_pattern -i (/cgi-bin/|\?) 0 0% 0

refresh_pattern . 0 20% 4320

Bagi anda yang ingin melakukan optimasi refresh_pattern secara serius, gunakan refresh_pattern ini

terlebih dahulu. Kemudian ditambah sedikit demi sedikit sesuai dengan analisa anda terhadap perilaku

browsing dan kebutuhan klien.

Refresh_pattern diatas akan melakukan caching object FTP selama maksimum seminggu (10.080

menit).

Tidak akan melakukan caching konten dari URL yang mengandung konteks cgi-bin untuk

menghindari konflik terhadap CGI script dan konten dinamik.

Sedangkan konten lain akan di cache selama maksimum 3 hari (4320 menit).

refresh_pattern dasar ini tetap memperhatikan sepenuhnya response yang dikirim oleh server. Oleh

karena itu, refresh_pattern ini dapat dijadikan acuan dasar dalam penulisan selanjutnya.

“Ingat, tujuan squid adalah menjadikan akses internet lebih efisien. Cache farming (menumpuk

object dalam cache) memang penting, tapi bukan merupakan tujuan utama implementasi squid”.

– Adry “Catalyst” (2011)

Page 14: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

Contoh refresh_pattern Untuk Situs-Situs Populer

refresh_pattern efektif digunakan jika tidak ada expire header dari server asal object, atau

refresh_pattern menggunakan opsi override-expire.

Untuk situs-situs tertentu, pelajari terlebih dahulu konten apa saja yang berada didalamnya, sekaligus

periksa URL sumber-sumber kontennya.

Bagaimana cara memeriksa URL konten sebuah situs? Teknik sederhananya adalah menggunakan

melihat page source-nya. Jika anda menggunakan Firefox, klik kanan pada sebuah halaman situs

kemudian pilih “View Page Source”.

Sedikit capture page source facebook.com :

Berikut beberapa contoh refresh_pattern untuk situs-situs besar (perlu dicatat saya menggunakan

Lusca untuk refresh_pattern ini) :

1. Contoh refresh_pattern untuk Facebook

Facebook menggunakan CDN (Content Delivery Network) untuk menyimpan konten

(gambar, css, javascript, dsb). CDN yang mereka gunakan antara lain fbcdn.net dan

akaiamaihd.net, oleh karena itu konten dari CDN tersebut juga akan kita fokuskan untuk

masuk cache.

refresh_pattern –i

\.((facebook.com)|(fbcdn.net)|(akamaihd.net)).*\.(jpg|gif|png|mp(4|3))$ 1440 300%

10080 override-expire ignore-no-cache ignore-private reload-into-ims

Sedikit agak ekstrim, karena benar-benar “melanggar” kaidah HTTP. Tapi asumsi saya adalah

setiap foto yang di host oleh CDN facebook bersifat statik. Ekstensi mp4 atau mp3 juga di

cover oleh refresh_pattern ini.

Page 15: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

2. Kaskus

Saya mengamati path object-object di Kaskus juga bersifat statis walaupun di page source nya

terdapat HTTP meta Pragma dan Cache Control no-cache. Dan saya rasa cukup aman jika

menggunakan opsi tuning di refresh_pattern nya.

refresh_pattern \.kaskus.us.*\/ 43200 90% 129600 override-expire

override-lastmod ignore-reload ignore-no-cache store-stale

3. Situs berita Detik

Situs berita detik memiliki beberapa subdomain antara lain oto.detik.com, inet.detik.com,

hot.detik.com, dan sebagainya. Sedangkan kontennya juga cukup aman di cache. Sebagian

besar kontennya berisi gambar, beberapa animasi flash, javascript dan css.

refresh_pattern \.detik.com.*\.(jpg|png|gif|css|js|swf)$ 10080 200% 43200 override-

expire override-lastmod ignore-no-cache store-stale

4. Patch game online

Sebelumnya, periksa secara seksama ekstensi apa saja yang merupakan patch game online.

Kemudian tentukan nilai max maksimal 1 minggu karena biasanya game online melakukan

patch dengan periode mingguan.

refresh_pattern –i \.(zip|exe|dll|ini|rar)$ 1440 100% 10080 override-

expire ignore-no-cache ignore-private reload-into-ims

Page 16: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

5. Object-object umum

Untuk meningkatkan probabilitas HIT, kita dapat tetapkan refresh_refresh untuk object-object

yang sering di akses.

refresh_pattern ^ftp: 1440 20% 10080

refresh_pattern ^gopher: 1440 0% 1440

refresh_pattern -i \.(gif|png|jpg|jpeg|ico)$ 10080 90% 43200 override-expire

ignore-no-cache ignore-no-store ignore-private

refresh_pattern -i \.(iso|avi|wav|mp3|mp4|mpeg|swf|flv)$ 43200 90%

432000 override-expire ignore-no-cache ignore-no-store ignore-private

refresh_pattern -i \.(exe|zip|tar|tgz|ram|rar|bin|ppt|doc|tiff)$

10080 90% 43200 override-expire ignore-no-cache ignore-no-store ignore-private

refresh_pattern -i \.index.(html|htm)$ 0 40% 10080

refresh_pattern -i \.(html|htm|css|js)$ 1440 40% 40320

refresh_pattern . 0 40% 40320

Demikian sedikit ulasan tentang squid refresh_pattern. Silakan bereksperimen sendiri, dan jangan lupa

di share kalo hasilnya memuaskan.

6. Dynamic contents

Perlu diketahui bahwa squid mencocokkan path object terhadap refresh_pattern secara

berurutan dari refresh_pattern teratas ke refresh_pattern yang berada di barisan bawah. Oleh

karena itu biasanya terdapat refresh_pattern untuk ftp dan gopher di bagian refresh_pattern

teratas – agar regex yang cocok terhadap protocol tersebut lebih cepat terproses.

Secara default, squid tidak akan menyimpan object dinamik kedalam cache – konten atau

object dinamis ditentukan dicocokkan dengan path “cgi-bin” atau “?” yang terdapat pada

URL nya. Pada squid 2.7 kebawah konten dinamik tidak di cache menggunakan tag

hierarchy_stoplist dan cache_deny. Sedangkan pada versi 2.7 (khususnya Lusca) dan 3

keatas, konten dinamik tidak dicache dengan refresh_pattern -i (/cgi-bin/|\?) 0 0%

0.

Quick Tips :

Untuk mengecek validitas regular expression yang digunakan pada refresh_pattern, anda dapat

menggunakan web berikut :

- http://tools.netshiftmedia.com/regexlibrary/

- http://regexpal.com/

Page 17: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

Tujuan hal ini adalah kita dapat menentukan secara spesifik domain apa saja yang konten

dinamiknya akan kita cache. Contoh :

refresh_pattern -i movies.com/.* 10080 90% 43200

refresh_pattern (/cgi-bin/|\?) 0 0% 0

Dengan refresh_pattern tersebut, semua object dari movies.com walaupun terdapat “?” dalam

URL, objectnya tetap bisa di cache oleh squid.

Agar lebih aman biasanya di buatkan acl cache allow untuk domain yang diizinkan untuk di

cache – terutama untuk squid versi 3 kebawah. Contoh acl dan refresh_pattern nya :

# izinkan youtube agar di cache

acl youtube dstdomain .youtube.com

cache allow youtube

# selain youtube, kita paksa agar tidak masuk cache

hierarchy_stoplist cgi-bin ?

acl QUERY urlpath_regex cgi-bin \?

cache deny QUERY

refresh_pattern -i (get_video\?|videodownload\?|videoplayback\?) 161280

50000% 525948 override-expire ignore-reload

Setiap object dynamic content pada situs web video semacam Youtube, Vimeo dan sejenisnya

di host pada server CDN yang memiliki path URL khususnya subdomain yang berbeda.

Untuk memastikan object dapat di HIT kita dapat menggunakan url redirector.

Jabaran diatas hanyalah sedikit contoh untuk beberapa situs popular dan dapat di optimasi, dan

dioprek lebih lanjut agar squid lebih agresif dan bekerja maksimal.

Demikian tulisan kecil ini saya buat. Semoga bermanfaat untuk rekan-rekan yang lainnya. Jika ada

penambahan, koreksi, atau pertanyaan silakan menghubungi saya di alamat email berikut ini.

Salam opensource!

- Fajar Ramadhan – [email protected]

Page 18: Panduan Refresh Pattern

fazar.net – digital lifestyle and inspiration

web: http://www.fazar.net/ - email : [email protected]

Greets fly to :

Adry “Catalyst”, Yo2d, Awey (Klinik Data crews @ http://www.klinikdata.com/)

All members forum ClearOS Indonesia dan Forum Mikrotik Indonesia. You all rock, guys!!

Powered by :

networking / programming / web development

Sumber :

- Squid Proxy Server 3.1 Beginners Guide, Packt Publishing. February 2011

- Squid The Definitive Guide, Oreilly. January 2004

- Speed Up Internet Access Using Refresh Patterns, Solomon Asare, DelXy.

- squid.default.conf