From fab282eb800ef5626f85f3c876e797b4fc472e0d Mon Sep 17 00:00:00 2001 From: Urban Müller Date: Fri, 11 Oct 2013 15:07:57 +0000 Subject: use md5 for checksum, use long expire, always return not modified --- itjs.class | 11 +++-------- itjs.php | 31 +++++++++++++++++-------------- 2 files changed, 20 insertions(+), 22 deletions(-) diff --git a/itjs.class b/itjs.class index e8284ce..d9db666 100644 --- a/itjs.class +++ b/itjs.class @@ -158,7 +158,7 @@ static function strip($code) if (!it::is_devel()) $code = preg_replace(array( '|\s//.*$|m', - '|\s+/\*.*?\*/|s', # MUST require at least one space before "/*" (jquery.js) but MUST NOT require space before "*/" (searchmap.js) + '|\s+/\*.*?\*/|s', # MUST require at least one space before /* (jquery.js) but MUST NOT require space before */ (searchmap.js) '|^\s+|m' ), array(), $code); if (EDC('print')) @@ -179,14 +179,9 @@ static function checksum($files = array()) $service_itjs = glob($GLOBALS['ULTRAHOME'] . "/itjs/*.{js,css,php}", GLOB_BRACE); foreach (array_merge($files, $service_itjs, $itools_itjs, array("$itjs/itjs.php", "$itjs/itjs.class")) as $file) - { - if (!it::is_devel()) - $result += @filesize($file); - else - $result = md5($result . @file_get_contents($file)); - } + $allfiles .= $file; - return $result; + return substr(md5($allfiles), 0, 8); # UTF8SAFE } } diff --git a/itjs.php b/itjs.php index 9f5cc78..65a78fe 100644 --- a/itjs.php +++ b/itjs.php @@ -26,6 +26,11 @@ require "itools/itools.lib"; if (EDC('slowjs')) sleep(20); +if ($_SERVER['HTTP_IF_NONE_MATCH'] && it::is_live() && !$_REQUEST['retry']) { + header("HTTP/1.0 304 Not Modified"); # client should always keep the component that fits the page it has + exit; +} + $data = ""; $files = itjs::filenames(it::match('/itjs/([a-z0-9_,.-]*)', $_SERVER['PHP_SELF'])); @@ -64,23 +69,21 @@ else if (!it::match('\.html$', $file)) @header("Etag: $checksum"); -if ($checksum != $_SERVER['HTTP_IF_NONE_MATCH'] || $_REQUEST['retry']) +if (!preg_match('/Opera/', $_SERVER['HTTP_USER_AGENT']) && it::is_live() && !$_REQUEST['retry']) { - if (!preg_match('/Opera/', $_SERVER['HTTP_USER_AGENT']) && it::is_live() && !$_REQUEST['retry']) - header("Cache-Control: max-age=900"); - - $data = itjs::strip($data); + header("Cache-Control: max-age=604800"); + header("Expires: " . gmdate("D, d M Y H:i:s", time()+604800). " GMT"); +} - if ($_REQUEST['boot']) - { - $data .= "window.it_boot_init();\n"; - if (!$_REQUEST['script']) - $data = sprintf("/*sln:%d*/\n%s/*eln:%d*/", grapheme_strlen($data), strtr($data, array('%' => "%25", '.' => "%2e", 'e' => "%65", 'i' => "%69")), grapheme_strlen($data)); # Protect from Firewalls/Proxies altering Javascript source code - } +$data = itjs::strip($data); - echo it_untaint($data); +if ($_REQUEST['boot']) +{ + $data .= "window.it_boot_init();\n"; + if (!$_REQUEST['script']) + $data = sprintf("/*sln:%d*/\n%s/*eln:%d*/", grapheme_strlen($data), strtr($data, array('%' => "%25", '.' => "%2e", 'e' => "%65", 'i' => "%69")), grapheme_strlen($data)); # Protect from Firewalls/Proxies altering Javascript source code } -else - header("HTTP/1.0 304 Not Modified"); + +echo it_untaint($data); ?> -- cgit v1.2.3