Caching Google Maps Dengan Squid


Oke, saya tau mungkin topik ini rada basi atau sudah banyak yang tau. Tapi sekedar untuk dokumentasi dan sharing untuk yang belum tau teknik cache Google maps dengan squid cache, maka saya kembali menuliskannya disini. Teknik ini membantu anda yang mencoba untuk memaksa Google maps (termasuk gambar-gambar Google earth, satellite, street views, atau location) agar dapat di cache dengan baik dengan menggunakan squid-2.7stable9.

Teknik ini bekerja dengan baik pada squid-2.7stable9 karena menggunakan fitur storeurl yang terintegrasi di squid versi ini.

How-to…

Pertama tambahkan pada squid.conf acl yang berisi regex (sub)domain google yang digunakan untuk “menyimpan” gambar-gambar untuk google maps, earth/satellite, street views, dan location. Kemudian, “kirimkan” ke script storeurl untuk kemudian di proses oleh squid.

# map, earth/satellite, street views, and location images, respectively.
acl gmapserver url_regex mt[0-9]?.google.co(m|\.id)
acl gmapserver url_regex khm[0-9]?.google.co(m|\.id)
acl gmapserver url_regex kh[0-9]?.google.co(m|\.id)
acl gmapserver url_regex cbk[0-9]?.google.co(m|\.id)
acl gmapserver url_regex t[0-9]?.google.co(m|\.id)

# allow storeurl for gmapserver
storeurl_access allow gmapserver
storeurl_access deny all

# storeurl script
storeurl_rewrite_program /etc/squid/gmaps.pl
storeurl_rewrite_children 1
storeurl_rewrite_concurrency 10

Kemudian tambahkan refresh_pattern agar squid dapat melakukan caching google maps.

# let's violates http 
refresh_pattern -i (mt|kh|khm|cbk|t).*\.google\.co(m|.id) 10080 90% 21600 override-expire reload-into-ims ignore-private ignore-must-revalidate

Perlu dicatat, squid-2.7stable9 tidak akan melakukan caching untuk url yang terdapat “?” didalamnya. Oleh sebab itu, jangan lupa memberikan comment (memberikan tanda #) di depan baris konfigurasi seperti ini:

#We recommend you to use the following two lines.
acl QUERY urlpath_regex cgi-bin \?
cache deny QUERY

Selanjutnya buatlah storeurl rewriter, pada contoh diatas file tersebut adalah /etc/squid/gmaps.pl, dengan isi sebagai berikut :

#!/usr/bin/perl

$| = 1;
while (<>) {
    @X = split;
    $x = $X[0] . " ";
        # print STDERR $_ . "\n";
	if (m/^http:\/\/(kh|mt|khm|cbk|t)[0-9]?(.google\.co(m|\.id).*)/) {
		print $x . "http://" . $1  . $2 . "\n";
	} else {
		print $x . $X[1] . "\n";
	}
}

Setelah selesai jangan lupa melakukan chmod agar script ini bisa dijalankan: chmod +x /etc/squid/gmaps.pl

You are done! Lakukan squid -k reconfigure agar squid membaca ulang file konfigurasi yang anda telah buat sebelumnya.

Ujicoba

Silakan coba membuka halaman http://maps.google.co.id/ pada browser anda, kemudian buka kembali halaman tersebut pada browser lain sambil mengamati squid access.log. Jika caching berhasil maka anda akan melihat gambar map akan di hit oleh squid.

Contoh log (kondisi memory hit)

1363234537.280      5 10.20.30.130 TCP_MEM_HIT/200 59967 GET http://maps.google.co.id/ - NONE/- text/html
1363234537.494      0 10.20.30.130 TCP_MEM_HIT/200 830 GET http://maps.google.co.id/mapfiles/home3.html - NONE/- text/html
1363234537.524      0 10.20.30.130 TCP_MEM_HIT/200 14917 GET http://mt0.google.com/vt/lyrs=m@209000000&hl=id&src=app&x=26&y=15&z=5&s=Galil - NONE/- image/png
1363234537.524      0 10.20.30.130 TCP_MEM_HIT/200 13898 GET http://mt1.google.com/vt/lyrs=m@209000000&hl=id&src=app&x=25&y=15&z=5&s=Ga - NONE/- image/png
1363234537.525      0 10.20.30.130 TCP_MEM_HIT/200 14289 GET http://mt1.google.com/vt/lyrs=m@209000000&hl=id&src=app&x=25&y=16&z=5&s=Gal - NONE/- image/png
1363234537.525      2 10.20.30.130 TCP_MEM_HIT/200 29979 GET http://maps.google.co.id/images/experiments/nav_logo78.png - NONE/- image/png
1363234537.529      5 10.20.30.130 TCP_MEM_HIT/200 14133 GET http://mt0.google.com/vt/lyrs=m@209000000&hl=id&src=app&x=26&y=16&z=5&s=Galile - NONE/- image/png
1363234537.613      0 10.20.30.130 TCP_MEM_HIT/200 6070 GET http://mt1.google.com/vt/lyrs=m@209000000&hl=id&src=app&x=27&y=15&z=5&s= - NONE/- image/png
1363234537.618      0 10.20.30.130 TCP_MEM_HIT/200 2391 GET http://mt0.google.com/vt/lyrs=m@209000000&hl=id&src=app&x=26&y=17&z=5&s=Galileo - NONE/- image/png
1363234537.618      0 10.20.30.130 TCP_MEM_HIT/200 624 GET http://mt1.google.com/vt/lyrs=m@209000000&hl=id&src=app&x=25&y=17&z=5&s=Gali - NONE/- image/png
1363234537.618      0 10.20.30.130 TCP_MEM_HIT/200 8654 GET http://mt1.google.com/vt/lyrs=m@209000000&hl=id&src=app&x=27&y=16&z=5&s=G - NONE/- image/png
1363234537.618      0 10.20.30.130 TCP_MEM_HIT/200 11718 GET http://mt1.google.com/vt/lyrs=m@209000000&hl=id&src=app&x=27&y=17&z=5&s=Ga - NONE/- image/png

 Well, that’s all folks! :)

You may also like:

Incoming search:


6 Comments

Leave a comment

Current day month ye@r *