Svaki jedinstveni URL se po default kesira, osim ako nije u pitanju PHP skripta pa onda doda odredjena zaglavlja koja "ubiju" kesiranje.
Ja koristim sledeci kod za kesiranje javascript fajlova (url je tipa /js/prototype.js;/js/behaviour.js;/js/scriptaculous/effects.js) :
PHP kôd:
$last_modified = gmdate('M d Y H:i:s', $timestamp) . ' GMT';
$etag = md5($last_modified);
$headers = apache_request_headers();
$if_modified_since = preg_replace('/;.*$/', '', $headers['If-Modified-Since']);
if ($if_modified_since == $last_modified) {
header("HTTP/1.0 304 Not Modified");
exit;
}
header("E-tag: $etag");
header("Expires: Tue, 20 Apr 2010 19:15:00 GMT");
header("Last-modified: " . $last_modified);
header("Cache-Control: max-age=86400, public"); // cache 1 day for proxies
print file_get_contents(<JS FAJLOVI>);
Objasnjenje: $timestamp je najveca vrednost
filemtime od ukljucenih fajlova. E-tag posto drugacije ne umem, dobijem kao md5 od filemtime pa je uvek jedinstven.
Pomocu funkcije apache_request_headers pokupim sva zaglavlja koje browser salje i uporedim If-Modified-Since sa $last_modifled fajla. Ako nije skoro editovan neki fajl, saljem zaglavlje 304 Not Modified, ako jeste, saljem nov sadrzaj i postavljam zaglavlja E-tag i Last-Modified.
Inace, sve ovo radi zbog toga sto kad browseru posaljes Last-Modified zaglavlje, on ce te sledeci put pitati sa If-Modified-Since.
P.S. postoji problem sto kod nekih PHP instalacija nema funkcije apache_request_headers