Send last modified information for images so the browser can use the cached version instead of re-downloading images each page refresh.

This commit is contained in:
David Lee Lambert
2005-07-10 02:22:21 +00:00
committed by WineHQ
parent e645810d69
commit 4ddd5dc8c0
2 changed files with 79 additions and 3 deletions

View File

@@ -6,14 +6,71 @@
include("path.php");
require(BASE."include/"."incl.php");
require(BASE."include/"."screenshot.php");
/* an image doesn't have a link, so a cookie makes no sense */
header("Set-Cookie: ");
header("Pragma: ");
if(!$_SESSION['current']->hasPriv("admin") && $_REQUEST['queued'])
{
errorpage("Insufficient privileges.");
exit;
errorpage("Insufficient privileges.");
exit;
}
if ($_REQUEST['REQUEST_METHOD']='HEAD')
{
/* WARNING! optimization of logic in include/screenshots.php */
if (sscanf($_REQUEST['id'],"%d", &$iId) < 1) {
errorpage("Bad parameter");
exit;
}
$sQuery = "SELECT id FROM appData
WHERE id = ".$iId."
AND type = 'image' LIMIT 1";
if (!($hResult = query_appdb($sQuery) &&
$fImage = fopen($_SERVER['DOCUMENT_ROOT']."/data/screenshots/".$iId)))
{
header("404 No such image");
exit;
}
$iModTime = fstat($fImage)['mtime'];
$sMagic = fread($fImage,8);
fclose($fImage);
if (strcmp("\x89PNG\r\n\x1A\n",$sMagic)==0)
{
header("Content-Type: image/png");
} else if (preg_match("^\xFF\xD8..(JFIF|Exif)",$sMagic)) {
header("Content-Type: image/jpeg");
} else {
header("500 Bad image format");
exit;
}
header("Cache-Control: public");
header("Expires: ");
header("Last-Modified: ".fHttpDate($iModTime));
exit;
}
$oScreenshot = new screenshot($_REQUEST['id'],$_REQUEST['queued']);
/* at this point, we know that .../screenshots/$id and
* .../screenshots/thumbnails/$id both exist; normally
* they would both be created at the same time. */
$iModTime = stat($_SERVER['DOCUMENT_ROOT']
."/data/screenshots/".$_REQUEST['id'])['mtime'];
header("Cache-Control: public");
header("Expires: ");
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE']) &&
$iModTime == pHttpDate($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
header("HTTP/1.0 304 Not Modified");
exit;
}
header("Last-Modified: ".fHttpDate($iModTime));
if(!$_REQUEST['thumbnail'])
$oScreenshot->oScreenshotImage->output_to_browser(1);
else
$oScreenshot->oThumbnailImage->output_to_browser(1);
?>
?>