проблема кеширования php - PullRequest
       2

проблема кеширования php

2 голосов
/ 23 ноября 2010

У меня есть класс для кэширования некоторых изображений

<?php
class Vp_CacheImage
{
    public function cache($cacheTime, $place) // $place = id of image (between 1 and 100)
    {
        $send_body = true; 
        $etag = '"' . md5(date('d.m.Y', time()) . $place) . '"';
        header("ETag: " . $etag );
        header("Last-modified: " . gmdate("D, d M Y H:i:s", $cacheTime) . " GMT");

        $inm = explode(',', getenv("HTTP_IF_NONE_MATCH"));
        foreach ($inm as $i)
        {
            if (trim($i) == $etag || trim($i) == $cacheTime)
            {
                header ("HTTP/1.0 304 Not Modified");
                $send_body = false;
            }
        }

        if(getenv("HTTP_IF_MODIFIED_SINCE") == gmdate("D, d M Y H:i:s", $cacheTime). " GMT")
        {
            header ("HTTP/1.0 304 Not Modified");
            $send_body = false;
        }

        header("Expires: " . gmdate("D, d M Y H:i:s", time() + Config::$config['cache']['images']['topvideo']) . " GMT");
        header("Cache-Control: max-age=" . Config::$config['cache']['images']['topvideo'] . ", must-revalidate");
        if ($send_body) return true; else return false;
    }
}

Это работает. Но мне приходится делать перезагруженную картинку иногда, а не взятую из кеша. Как это сделать?

Ответы [ 3 ]

2 голосов
/ 23 ноября 2010

Затем вы должны сначала удалить его из кеша, или .. добавить темп.случайный токен, например: ?x=234 за ним и перезагрузите его.

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

0 голосов
/ 23 ноября 2010

Самый простой способ заставить браузер снова загрузить изображение, это добавить строку запроса в конец имени файла.

0 голосов
/ 23 ноября 2010

Можете ли вы просто добавить версию к URL-адресу изображения? Пример: myimage.jpg? V = 10

Это приведет к тому, что браузер будет запрашивать новую копию изображения, а не использовать кэшированную.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...