FiRеFоX
V.I.P.
- Регистрация
- 07.08.2010
- Сообщения
- 744
Есть страничка php, на которой выводятся изображения вида:
<img src="/img.php?id_img=1" alt="img" /><img src="/img.php?id_img=2" alt="img" /><img src="/img.php?id_img=3" alt="img" />...Файлик img.php кое-что проверяет и при необходимости отдает изображение юзеру, вот его код:
<?require_once $_SERVER["DOCUMENT_ROOT"].'/function.conf';$id_file = intval($_GET['id_img']);$info_file = $_SESSION['gallery_hash_img'][$id_file];// Разрешено ли в сессии отдать изображение и есть ли путь в сессии к этому изображению?if($info_file['autoriz'] === true && $info_file['path']) { file_download($info_file['path'], 'browser');}// Иначе отдает изображение о том, что сюда доступ закрытelse { $path = 'img/default/no_img_dostup.jpg'; file_download($path, 'browser');}Вот код функции file_download, которая отдает изображения (немного сокращена до необходимого):
function file_download($file_path, $type_upload = false) {$file_path = $_SERVER["DOCUMENT_ROOT"].'/'.$file_path; if (is_file($file_path)) { $day_tmp = date('d') + 30; $sec_tmp = 30 * 24 * 60 * 60; header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($file_path)).' GMT'); header('Expires: '.date("D, $day_tmp M Y H:i:s").' GMT'); header("Cache-Control: public"); header("Content-type: image/jpeg"); header('Content-Disposition: inline; filename='.basename($file_path)); header('Content-Length: '.filesize($file_path)); readfile($file_path); exit; }}
Но вместо нужных заголовков получаю не правильные и картинки не кешируются, вот что говорит гугл-хром:
Cache-Control:max-age=2592000, publicConnection:Keep-AliveContent-Disposition:inline; filename=c39d249aa9268d35d5cf7b8146da5d97.jpgContent-Length:4039Content-Type:image/jpegDate:Fri, 18 Oct 2013 14:18:31 GMTExpires:Fri, 48 Oct 2013 18:18:31 GMTKeep-Alive:timeout=5, max=100Pragma:no-cacheServer:LiteSpeedX-Powered-ByHP/5.3.27
Подозреваю, что это из-за штакета, который находится в корне сайта, в нем указано, что php файлы не кешировать. Что посоветуете?
<img src="/img.php?id_img=1" alt="img" /><img src="/img.php?id_img=2" alt="img" /><img src="/img.php?id_img=3" alt="img" />...Файлик img.php кое-что проверяет и при необходимости отдает изображение юзеру, вот его код:
<?require_once $_SERVER["DOCUMENT_ROOT"].'/function.conf';$id_file = intval($_GET['id_img']);$info_file = $_SESSION['gallery_hash_img'][$id_file];// Разрешено ли в сессии отдать изображение и есть ли путь в сессии к этому изображению?if($info_file['autoriz'] === true && $info_file['path']) { file_download($info_file['path'], 'browser');}// Иначе отдает изображение о том, что сюда доступ закрытelse { $path = 'img/default/no_img_dostup.jpg'; file_download($path, 'browser');}Вот код функции file_download, которая отдает изображения (немного сокращена до необходимого):
function file_download($file_path, $type_upload = false) {$file_path = $_SERVER["DOCUMENT_ROOT"].'/'.$file_path; if (is_file($file_path)) { $day_tmp = date('d') + 30; $sec_tmp = 30 * 24 * 60 * 60; header('Last-Modified: '.gmdate('D, d M Y H:i:s', filemtime($file_path)).' GMT'); header('Expires: '.date("D, $day_tmp M Y H:i:s").' GMT'); header("Cache-Control: public"); header("Content-type: image/jpeg"); header('Content-Disposition: inline; filename='.basename($file_path)); header('Content-Length: '.filesize($file_path)); readfile($file_path); exit; }}
Но вместо нужных заголовков получаю не правильные и картинки не кешируются, вот что говорит гугл-хром:
Cache-Control:max-age=2592000, publicConnection:Keep-AliveContent-Disposition:inline; filename=c39d249aa9268d35d5cf7b8146da5d97.jpgContent-Length:4039Content-Type:image/jpegDate:Fri, 18 Oct 2013 14:18:31 GMTExpires:Fri, 48 Oct 2013 18:18:31 GMTKeep-Alive:timeout=5, max=100Pragma:no-cacheServer:LiteSpeedX-Powered-ByHP/5.3.27
Подозреваю, что это из-за штакета, который находится в корне сайта, в нем указано, что php файлы не кешировать. Что посоветуете?