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 изображений на стороне клиента

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
byfahrenheit
Отправлено: 19 Июля, 2011 - 18:41:10
Post Id



Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Здравствуйте. Есть динамические GD изображения (баннеры, которые позже будут использоваться в подписи на форуме).
Но при каждой загрузке данного изображения, следует запрос на сервер, на котором выполняется скрипт, после чего выводится изображения. Следственно помимо нагрузки на сервер, само изображение достаточно долго грузится.
Видел аналогичные скрипты, но изображение грузится долго только при первой загрузке. Пришел к выводу что там стоит кэширование на стороне клиента.
В итоге - надо прикрутить к своему скрипту возможность кэширование на стороне клиента, с обновлением каждых несколько часов.
Реально такое сделать?
Заранее благодарю за ответ.
 
 Top
grefon
Отправлено: 19 Июля, 2011 - 19:28:48
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Кеширование стоит не на стороне клиента а на стороне сервера. Я такое делал для скриншотов сайтов и подобной тематики. В скрипт нужно вставить проверку на существование файла изображения. Если файл существует, то выводим его пользователю. Если файла нет, то запускаем скрипт создания изображения, после его создания сохраняем результат в файл и выводим этот результат пользователю.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
byfahrenheit
Отправлено: 19 Июля, 2011 - 20:31:59
Post Id



Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Делал так, но все равно картинка грузится относительно долго, в сравнении с подобными скриптами. Тут именно фишка в том, что браузер должен сам закэшировать ее, и обновлять через определенный промежуток времени
 
 Top
LIME
Отправлено: 19 Июля, 2011 - 20:46:35
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




byfahrenheit браузер кэширует по умолчанию, а указать время актуальности
можно через заголовок Cache-control
http://htmlweb[dot]ru/other/http_headers.php
 
 Top
byfahrenheit
Отправлено: 19 Июля, 2011 - 20:59:01
Post Id



Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Беру например этот пример:
PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. // Кеширование локальными клиентами и использование в течение 1 часа
  3. header("cache-control: private, max-age = 3600");
  4. echo "<h1>", date("H:i:s"), "</h1>";
  5. ?>

насколько я понял, он должен закэшировать текущее время на 1 час. В результате после обновления страницы - время обновляется....
 
 Top
grefon
Отправлено: 19 Июля, 2011 - 21:03:13
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




byfahrenheit, я Вам написал про кеширование на стороне сервера, потому что многие браузеры "по-своему" понимают команды кеширования, которые им дают. Чтобы максимально уменьшить нагрузку на сервер - нужно пользоваться кешом на стороне сервера.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
byfahrenheit
Отправлено: 19 Июля, 2011 - 21:14:12
Post Id



Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Это я знаю, но тут никак на стороне сервера, т.к.:
Запрос все равно будет следовать на сервер, т.е. картинка будет опять-же долго грузиться.

Вот для примера: http://g[dot]nfs-s[dot]com/4218/nfsw_MACROSDHC[dot]png
тут явно стоит кэширование на стороне клиента, т.к. при первой загрузке картинка дольше грузится, а при последующей - моментально.
 
 Top
grefon
Отправлено: 19 Июля, 2011 - 21:52:26
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




byfahrenheit пишет:
Вот для примера: http://g.nfs-s.com/4218/nfsw_MACROSDHC.png

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


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
LIME
Отправлено: 19 Июля, 2011 - 22:16:59
Post Id


Активный участник


Покинул форум
Сообщений всего: 10732
Дата рег-ции: Нояб. 2010  


Помог: 322 раз(а)




byfahrenheit посмотрел заголовки которыми обменивается ваш пример с браузером
ничего вообще не предпринимается
стандартное кэширование браузером
потому и грузится 1ый раз долго потом просто из кэша браузера берется
привожу заголовки для двух обращений чтоб вы могли заметить разницу
Спойлер (Отобразить)

(Добавление)
первый же заголовок ответа указывает когда истекает срок актуальности
(Добавление)
во втором запросе обратите внимание на заголовок запроса If-Modified-Since
и код ответа
 
 Top
byfahrenheit
Отправлено: 19 Июля, 2011 - 22:22:29
Post Id



Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




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

Что-бы картинки не накапливались в директории, хотелось бы сделать авто очистку директории в заданное время, не зависимо от запроса скрипта. Не подскажете как лучше реализовать?
 
 Top
grefon
Отправлено: 19 Июля, 2011 - 23:07:17
Post Id



Частый посетитель


Покинул форум
Сообщений всего: 823
Дата рег-ции: Нояб. 2010  


Помог: 32 раз(а)




Поставьте удаление всех файлов в папке на cron.


-----
____________________________________________________________________
Ну как то так, наверное.
http://grefon[dot]com
 
 Top
byfahrenheit
Отправлено: 20 Июля, 2011 - 13:35:32
Post Id



Новичок


Покинул форум
Сообщений всего: 48
Дата рег-ции: Июль 2011  


Помог: 0 раз(а)




Спасибо. Так и сделаю...
p.s. Жаль не могу поставить +, не хватает сообщений
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Графика в PHP »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB