Проблема с кешем Apache / PHP - PullRequest
       9

Проблема с кешем Apache / PHP

0 голосов
/ 08 ноября 2010
<?php
    chdir('../../../../');
    include('bootstrap.php');

    $place = isset($_GET['place'])  ?   (is_array($_GET['place']))   ?   intval($_GET['place'][0]) :   intval($_GET['place'])      : null;

    $query = mysql_query("SELECT `place`, `image`, `imagetype` FROM `topvideo` WHERE `place` = '" . $place . "'");
    if (mysql_num_rows($query))
    {
        while ($row = mysql_fetch_array($query))
        {
            $im = imagecreatefromstring($row['image']);
            if ($im !== false)
            {
                header('Cache-Control: public, proxy-revalidate');
                header('Last-Modified:Mon, 02 Nov 2009 09:50:18 GMT');
                header('Expires: ' . gmdate ("D, d M Y H:i:s", time() + 60 * 60 * 24 * 24 . ' GMT');

                header('Content-Type: image/jpeg');
                imagejpeg($im);
                imagedestroy($im);
            }
        }
    }

Ответ всегда 200, но мне нужно кэшировать изображение на 2 дня, а ответ был 304 .... почему? извините за плохой английский

1 Ответ

1 голос
/ 08 ноября 2010

для отправки 304 Вам нужно включить Etag в заголовки вашего ответа, etag - это что-то вроде хэша самого контента и даты его создания.

После того, как вы включите etag в ответ, браузер отправит вам заголовок запроса "If-None-Match ".

Вы должны сравнить эти заголовки и, если они совпадают, ответить 304, если нет, отправить новый контент с новым заголовком Etag и статусом 200.

...