Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > PHP: Общие вопросы > Кэширование картинки через php


Автор: neoks 24.8.2011, 17:59
Столкнулся с проблемой, делал java скрипт который по ширине экрана показывает картинки пользователю.
Через java скрипт не получилось проверить на существование картинки, поэтому решил сделать php файл который будет проверять и в зависимости от ситуации будет отдавать картинку.

На практике все работает, но на испытании появилось проблема, а проблема в том что браузер не кеширует картинку и заново загружает.

Обращаюсь к картинке так.

Код

<img src="uploads/images/displayImg.php?name=8909347466777" />


Сам displayImg.php

Код

<?
define ( 'SL', true );
define ( 'ROOT_DIR', '../../..' );
define ( 'SYSTEM_DIR', ROOT_DIR.'/system' );

require_once (SYSTEM_DIR . '/my_config.php');
require_once (SYSTEM_DIR . '/function.php');

$name  = replase($_GET['name']);
$size  = (isset($_GET['size'])) ? intval($_GET['size']) : 1920;

if($size >= 1920 and file_exists(ROOT_DIR.'/uploads/images/'.$name.'_1920.jpg')) $url = 'uploads/images/'.$name.'_1920.jpg';
else{
    if(file_exists(ROOT_DIR.'/uploads/images/'.$name.'_1680.jpg')) $url = 'uploads/images/'.$name.'_1680.jpg';
    else{
        if(file_exists(ROOT_DIR.'/uploads/images/'.$name.'_1280.jpg')) $url = 'uploads/images/'.$name.'_1280.jpg';
        else $url = 'uploads/images/'.$name.'.jpg';
    }
}

header("Content-type: image/jpeg");

print @file_get_contents(ROOT_DIR.'/'.$url);
?>


Что нужно дописать чтоб браузер понимал что картинка уже была загружена ?

Добавлено через 9 минут и 48 секунд
Ой, сори, не заметил один баг, путь был не правильный uploads/images/displayImg.php?name=8909347466777&size=1680.jpg
Лишний .jpg  smile 
Мозги уже плывут, лан еще раз сори за флуд.

Автор: maxipub 24.8.2011, 18:09
Я так понимаю, отдавать Last-Modified заголовок через PHP.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)