Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770
Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737 Форумы портала PHP.SU :: Кєширование GD изображений на стороне клиента
Покинул форум
Сообщений всего: 48
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Здравствуйте. Есть динамические GD изображения (баннеры, которые позже будут использоваться в подписи на форуме).
Но при каждой загрузке данного изображения, следует запрос на сервер, на котором выполняется скрипт, после чего выводится изображения. Следственно помимо нагрузки на сервер, само изображение достаточно долго грузится.
Видел аналогичные скрипты, но изображение грузится долго только при первой загрузке. Пришел к выводу что там стоит кэширование на стороне клиента.
В итоге - надо прикрутить к своему скрипту возможность кэширование на стороне клиента, с обновлением каждых несколько часов.
Реально такое сделать?
Заранее благодарю за ответ.
grefon
Отправлено: 19 Июля, 2011 - 19:28:48
Частый посетитель
Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010
Помог: 32 раз(а)
Кеширование стоит не на стороне клиента а на стороне сервера. Я такое делал для скриншотов сайтов и подобной тематики. В скрипт нужно вставить проверку на существование файла изображения. Если файл существует, то выводим его пользователю. Если файла нет, то запускаем скрипт создания изображения, после его создания сохраняем результат в файл и выводим этот результат пользователю.
----- ____________________________________________________________________
Ну как то так, наверное. http://grefon[dot]com
byfahrenheit
Отправлено: 19 Июля, 2011 - 20:31:59
Новичок
Покинул форум
Сообщений всего: 48
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Делал так, но все равно картинка грузится относительно долго, в сравнении с подобными скриптами. Тут именно фишка в том, что браузер должен сам закэшировать ее, и обновлять через определенный промежуток времени
LIME
Отправлено: 19 Июля, 2011 - 20:46:35
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
насколько я понял, он должен закэшировать текущее время на 1 час. В результате после обновления страницы - время обновляется....
grefon
Отправлено: 19 Июля, 2011 - 21:03:13
Частый посетитель
Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010
Помог: 32 раз(а)
byfahrenheit, я Вам написал про кеширование на стороне сервера, потому что многие браузеры "по-своему" понимают команды кеширования, которые им дают. Чтобы максимально уменьшить нагрузку на сервер - нужно пользоваться кешом на стороне сервера.
----- ____________________________________________________________________
Ну как то так, наверное. http://grefon[dot]com
byfahrenheit
Отправлено: 19 Июля, 2011 - 21:14:12
Новичок
Покинул форум
Сообщений всего: 48
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Это я знаю, но тут никак на стороне сервера, т.к.:
Запрос все равно будет следовать на сервер, т.е. картинка будет опять-же долго грузиться.
Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010
Помог: 32 раз(а)
byfahrenheit пишет:
Вот для примера: http://g.nfs-s.com/4218/nfsw_MACROSDHC.png
Ну вообще-то у меня картинка загрузилась моментально. Так что или провайдер хороший, или они тоже кешируют на стороне сервера.
----- ____________________________________________________________________
Ну как то так, наверное. http://grefon[dot]com
LIME
Отправлено: 19 Июля, 2011 - 22:16:59
Активный участник
Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010
Помог: 322 раз(а)
byfahrenheit посмотрел заголовки которыми обменивается ваш пример с браузером
ничего вообще не предпринимается
стандартное кэширование браузером
потому и грузится 1ый раз долго потом просто из кэша браузера берется
привожу заголовки для двух обращений чтоб вы могли заметить разницу
(Добавление)
первый же заголовок ответа указывает когда истекает срок актуальности (Добавление)
во втором запросе обратите внимание на заголовок запроса If-Modified-Since
и код ответа
byfahrenheit
Отправлено: 19 Июля, 2011 - 22:22:29
Новичок
Покинул форум
Сообщений всего: 48
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Спасибо всем большое) Прощу прощение если что не так)
Ввобщем сделал следующим образом:
Если картинки нет на сервере или она устаревшая, то скрипт обрабатывает ее и загружает на сервер. (в принципе изначально так думал сделать, но там были проблемы с моем скрипте, из-за которых скрипт тупил. теперь проблему исправил, и все работает)
Что-бы картинки не накапливались в директории, хотелось бы сделать авто очистку директории в заданное время, не зависимо от запроса скрипта. Не подскажете как лучше реализовать?
grefon
Отправлено: 19 Июля, 2011 - 23:07:17
Частый посетитель
Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010
Помог: 32 раз(а)
Поставьте удаление всех файлов в папке на cron.
----- ____________________________________________________________________
Ну как то так, наверное. http://grefon[dot]com
byfahrenheit
Отправлено: 20 Июля, 2011 - 13:35:32
Новичок
Покинул форум
Сообщений всего: 48
Дата рег-ции: Июль 2011
Помог: 0 раз(а)
Спасибо. Так и сделаю...
p.s. Жаль не могу поставить +, не хватает сообщений
Все гости форума могут просматривать этот раздел. Только зарегистрированные пользователи могут создавать новые темы в этом разделе. Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.