Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Скриптовые языки программирования > PHP
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 11.07.2015, 15:34   #1
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Имеется страница, в ней по таймеру на Jquery перезагружается рисунок.

Как можно по проще перезагружать только когда у картинке на сервере изменится дата создания.

Погуглил, нашел такое:
Цитата:
Ну вы нагородили тут На самом деле всё гораздо проще. Пишите PHP-код по этому алгоритму:
Для данного файла в .htaccess нужно написать правило, по которому сервер всегда будет его отдавать с http-заголовком Cache-Control: must-revalidate
AJAX-запрос обновляет картинку, посылая всего один GET-запрос: http://yourdomain/yourfile.bmp
PHP проверяет http-заголовок Last-Modified данного файла. Если он совпадает с датой последней модификации ( filemtime() ), то отдается обратно один заголовок HTTP/1.x 304 Not Modified, если не совпадает - отдается файл с новой датой Last-Modified.
Но как это реализовать не знаю.

1)Не понимаю как здесь должен запускаться php файл, если запрос только на картинку
2) как объяснить jQuery когда загружать с сервера, а когда не обновлять вообще

P.S. Рисунок jpg . На сервере стоит nginx и в правилах стоит кэширование данных рисунков, менять которое мне не следует, так как там у меня еще кое что крутиться.

Я, конечно могу сделать по своему:

1)При перезаливке рисунка создавать текстовый файл( например number.txt) с номером изменения рисунка
2)на js создать переменную номера изменения рисунка (например jsnumber)
3) JQuery каждые пол секунды делает запрос к php скрипту, который сверяет номер переменной jsnumber и номера в текстовом файле number.txt. Выдает ответ для jQuery нужно ли перезагрузить картинку и jQuery перезагружает ее если нужно.

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

Подскажите как бы сделать просто и правильно, есть ли смысл использовать мой подход?

Последний раз редактировалось Stilet; 11.07.2015 в 16:44.
Illusiony вне форума Ответить с цитированием
Старый 11.07.2015, 16:42   #2
Gorychev
Участник клуба
 
Аватар для Gorychev
 
Регистрация: 08.03.2008
Сообщений: 1,537
По умолчанию

Как я мыслю, все имхо.
На странице для рисунков которые требуют проверки добавлять атрибут для тега img, например, data-filemtime="132423535334" где цифры, дата последней модификации файла.
Посылать ajax запрос в котором есть данные о имени файла и дате его посленей модификации. На серваке сравнивать даты модификаций (filemtime) если есть разбежности, то отсылать обратно инфу об этом. На странице обновить рисунок и значение атрибута data-filemtime.
Gorychev вне форума Ответить с цитированием
Старый 11.07.2015, 17:59   #3
Naive
Раздолбайских Дел
Старожил
 
Аватар для Naive
 
Регистрация: 22.05.2009
Сообщений: 3,828
По умолчанию

В любом запросе есть инфа о том, обновился ли файл. Прямо в заголовках запроса http!
Почему об этом рассказывает фронтендер в разделе бэкенда?
Как запрашивать вовремя файл, "оповестить" об этом клиент? Вариантов множество, от древних спама на сервер с запросом о готовности или лонгпула до новеньких веб-соккетов.
Все варианты входят в либу socket.io по ниспадающей по поддержке браузерами.
Alar, верни репу!
Naive вне форума Ответить с цитированием
Старый 11.07.2015, 18:40   #4
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Я думаю не стоит в моей задаче городить веб сокеты, к тому же я их не изучал вовсе. Мне нужно обновлять один рисунок с частотой около 1 раз в секунду, размер рисунка 100-200кбайт
Illusiony вне форума Ответить с цитированием
Старый 11.07.2015, 19:10   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Мне нужно обновлять один рисунок с частотой около 1 раз в секунду
Ниче так частота О_о... Если не секрет, что это там за набор рисунков такой жесткий?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.07.2015, 21:45   #6
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Ниче так частота О_о... Если не секрет, что это там за набор рисунков такой жесткий?
Скриншоты из игры. Это один рисунок, просто он обновляется так часто.
Illusiony вне форума Ответить с цитированием
Старый 12.07.2015, 14:56   #7
Illusiony
Форумчанин
 
Регистрация: 17.02.2014
Сообщений: 881
По умолчанию

Я сделал для пробы такое:
1)Раз в 2 секунды Jquery посылаем запрос к php скрипту
2) скрипт выдает строку последнего обновления данного рисунка на сервере
3) я проверяю есть такое же значение строки в переменной js. Если есть то ничего не делаю, т.е остается тоже самое изображение. Если строка отличается то записываю новую строку даты изменения в переменную js и принудительно загружаю картинку с сервера путем прибавления к пути рисунка:
Код:
+'?'+Math.floor( Math.random( ) * (100000+1) )
Без этого браузер тупо берет из кеша несмотря на то что дата создания файла другая.
4) ну и если рисунка вообще нету на сервере скрипт возвращает пустую строку, в этом случае я подменяю рисунком ошибки.

Этот метод лучше или хуже предложенных выше? В чем лучше или хуже?
Сейчас использовал локальный сервер. И почему то бывает что рисунок не загружается.
Может быть, когда происходит запись рисунка на диск его нельзя читать?

Последний раз редактировалось Illusiony; 12.07.2015 в 17:09.
Illusiony вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Ajax - реализовать, чтобы новые задания появлялись без перезагрузки страницы, когда пользователь находится на странице заданий kuba1981 JavaScript, Ajax 9 27.01.2016 23:16
виснуть игры на ноуте любые когда он не зарежается , как только начинает заряжаться становить все норм . это нормальное явления igor 91 Свободное общение 1 02.04.2012 14:06
Передача данных из ячеек нас странице asp.net в файл Excel хранящийся на сервере SashaS ASP.NET 0 23.03.2012 19:20
Background рисунок неправильно отображается в Mozilla на сервере Bendebej HTML и CSS 1 18.02.2010 17:34
Как узнать когда браузер скачивает, а когда нет? iPod Работа с сетью в Delphi 1 07.05.2007 15:16