Модераторы: skyboy, MoLeX, Aliance, ksnk
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Кеширование картинок 
:(
    Опции темы
InfMag
Дата 12.8.2008, 18:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



Вот вобщем написал скрипт для уменьшения изображений
Код

<?php

if (isset($_GET['src'])) $img=$_GET['src']; else $img='';

function getResizedImg($inputFilename, $maxsize=0, $quality=100)
{
    $path = pathinfo($inputFilename);
    $mime = $path['extension'];
    $imagedata = getimagesize($inputFilename);
    $w = $imagedata[0];
    $h = $imagedata[1];
    if ($maxsize<1) if ($w>$h) $maxsize=$w; elseif ($h>$w||$h==$w) $maxsize=$h;
    if ($h>$maxsize)
    {
        if ($w>$h)
        {
            $new_h = $maxsize;
            $new_w = $w*$new_h/$h;
        } elseif ($h>$w) {
            $new_h = $maxsize;
            $new_w = $w*$new_h/$h;
        } elseif ($h==$w) {
            $new_w = $maxsize;
            $new_h = $maxsize;
        }
    } else {
        $new_w = $w;
        $new_h = $h;
    }
    $new_w = round($new_w);
    $new_h = round($new_h);
    $im2 = ImageCreateTrueColor($new_w, $new_h);
    if (strtolower($mime)=='jpeg'||strtolower($mime)=='jpg')
        $image = ImageCreateFromJpeg($inputFilename);
    elseif (strtolower($mime)=='gif')
        $image = ImageCreateFromGif($inputFilename);
    elseif (strtolower($mime)=='png')
        $image = ImageCreateFromPng($inputFilename);
    imageCopyResampled($im2, $image, 0, 0, 0, 0, $new_w, $new_h, $w, $h);
    header("Content-Type: image/jpeg");
    imageJpeg($im2,'',$quality);
}

getResizedImg($_SERVER['DOCUMENT_ROOT'].$img, 100, 100);

?>

Дело в том что при каждом переходе по страницам картинки загружаются заново, это сильный напряг на сервер и на пользователя.
Может как-то через header можно прописать чтоб картинки кэшировались?
PM   Вверх
bars80080
Дата 12.8.2008, 19:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



может один раз делать мини-копии при загрузке изображений или при первом запросе на просмотр, а потом уже загружать уже существующие
PM MAIL WWW   Вверх
InfMag
Дата 12.8.2008, 19:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



bars80080, конечно можно, но там напряжная система получится, вдруг фотку поменяют, надо сравнивать, можно конечно периодический кэш держать, раз в 3-и часа там обновлять и т.п. Хотелось бы все упростить одним лишь заголовком. Такое разве нереализуемо?
PM   Вверх
bars80080
Дата 12.8.2008, 20:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



только на картинки? не знаю

а в смысле кэш держать? это ж серверная сторона. закачали фотку, сделал её превью, положил в соответствующие папочки оригинал и превью, в БД прописа их имена. решили поменять, закачали новую, прежние удаляем записываем новые. а если коллекция, то тоже самое, просто лишняя таблица данных
PM MAIL WWW   Вверх
InfMag
Дата 12.8.2008, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



bars80080, просто это дело я делаю в связке с 1-с битриксом. Тут желательно поменьше ручных структур.

Добавлено через 1 минуту и 44 секунды
bars80080, ну вот сам смотри, если рисунок будет ссылаться на php файл - он ведь так же по прежнему будет постоянно обновляться, даже если я буду возвращать уже готовые превью.
PM   Вверх
bars80080
Дата 12.8.2008, 21:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



не знаком с битриксом, в смысле ручных? имхо, совсем не нагрузит систему, а совсем даже наоборот

имхо
PM MAIL WWW   Вверх
Feldmarschall
Дата 13.8.2008, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок
****


Профиль
Группа: Участник
Сообщений: 2641
Регистрация: 11.12.2007

Репутация: 22
Всего: 32



Цитата(InfMag @  12.8.2008,  19:59 Найти цитируемый пост)
там напряжная система получится, вдруг фотку поменяют, надо сравнивать

непонятна суть проблемы. с чем сравнивать? какая разница, меняют фотку, или заново заливают? залили - сделал уменьшенную. что тут проверять?
по-моему, ты себе проблемы из пальца придумываешь.
тыщи сайтов делают уменьшенные при заливке, и прекрасно работают. а у тебя вдруг какие-то "напряжения" возникают
PM   Вверх
InfMag
Дата 13.8.2008, 10:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



Feldmarschall, ну для начала я спрашивал вопрос конкретно, даже не суть именно этой проблемы, как передать через header() не отмену кэширования, а наоборот. Во втором случае мне битрикс дает адрес такого вида: /upload/iblock/a/F1.jpg, я его перенаправляю на /face/resize_picture.php?src=%2Fupload%2Fiblock%2Fa2d%2F1.jpg вот и все. А в resize_picture.php уже выполняется ентот скрипт. То-есть прямых ссылок на картинку нет, только через скрипт. А картинку могут поменять, следовательно миниатюра тоже должна поменяться, только вот картинку могут загрузить с таким же именем - это одно дело, другое - то что прямой ссылки на миниатюру нет.
PM   Вверх
solenko
Дата 13.8.2008, 11:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



Цитата(InfMag @  13.8.2008,  09:32 Найти цитируемый пост)
То-есть прямых ссылок на картинку нет, только через скрипт

Почему? Эти имейджи доступны для просмотра не всем пользователям?


http://www.1c-bitrix.ru/api_help/iblock/custom.php


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
InfMag
Дата 13.8.2008, 11:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



solenko, они всем доступны. Дело не в том, я же скрипт свой не просто так использую. Те которые всем доступны произвольных размеров просто, в этом вся тема. Мне нужно их стандартизировать.
PM   Вверх
solenko
Дата 13.8.2008, 13:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



InfMag, так вот, отдача через скрпт имеет резон только в том случае, если на просмотр изображений накладываются изображения. Иначе при загрузке, (как это уже не раз говорилось и как это описано в доке по битриксу под который ты пишеш) создаеш несколько файлов. Например:
thumb_твое_имя
твое_имя
orign_твое_имя
Вот и все. Если тебе нужен thumbnail -- показываш  Thumb, если полный размер -- просто имя, если оригинальное изображение -- orgin

Что ты еще собрался стандартизировать?


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Onis
Дата 13.8.2008, 14:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 241
Регистрация: 18.6.2005
Где: Украина, Николаев

Репутация: нет
Всего: 3



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

http://forum.vingrad.ru/forum/topic-220367/unread-1.html
PM MAIL   Вверх
InfMag
Дата 13.8.2008, 14:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


…
***


Профиль
Группа: Завсегдатай
Сообщений: 1037
Регистрация: 21.11.2004

Репутация: 1
Всего: 4



solenko, эх, все дело в том что я хотел ограничиться писанием только в шаблоне сайте. Ну вобщем тада буду ковырять сам компонент, не суть, объяснить в чем проблема все равно не получается.
И все таки - самый первый, самый простой вопрос по теме - можно ли через header() не поставить no-cash, а наоборот сделать так чтоб кэш работал? Это в принципе и был мой вопрос.
PM   Вверх
solenko
Дата 13.8.2008, 16:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1473
Регистрация: 15.1.2006
Где: Украина

Репутация: 34
Всего: 67



http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html
Секция 14.9

Добавлено через 44 секунды
Сессия стартует для этого скрипта? Тогда автоматически посылается no-cahe.


--------------------
Ла-ла-ла-ла
Заметьте, нет официального подтверждения, что это не просто четыре слога.
PM MAIL WWW ICQ Skype   Вверх
Anarki
Дата 13.8.2008, 18:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 326
Регистрация: 14.3.2005

Репутация: 7
Всего: 11



Если каждый раз генерируется превьюха, то можно сверять дату(создания) превьюхи с датой изображения, она должна быть больше, иначе - создаем новую превьюху.


--------------------
PM WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.3382 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.