Benderlidze
@Benderlidze

Индикация обновления файла на сервере. Как правильно делать?

Есть на сервере xml со списком объектов - по сути php файл который выгружает из базы данные.
есть приложение которое вытягивает этот файл на телефон и парсит
вопрос как правильно реализовать обновление этого файла, что бы не загружать его каждый раз, а только после обновления данных в базе на сервере

думал сравнивать размер файла на телефоне и на сервере в байтах если отличается то загружать новый
или есть более разумные варианты варианты ?

и если это дата в хидерах то как разумно ее хранить если этот файл генерирует разные данные исходя из переданных гетом параметров
  • Вопрос задан
  • 2306 просмотров
Пригласить эксперта
Ответы на вопрос 2
DmitriyEntelis
@DmitriyEntelis
Думаю за деньги
Сравнивать размер файла - это в общем случае не правильно, т.к данные могут измениться (цена у товара например была 100, стала 200), а размер файла при этом не изменится.

Вам нужно сравнивать что то, что гарантированно изменяется при изменении данных.
Самое простое - дата изменения данных. Лучше всего в миллисекундах.
Т.е при любых изменениях базы данных - обновлять это число.
Обязательно отдавать его в xml.
Соответственно приложение сначала отдельно запрашивает с сервера дату изменения (заголовками или отдельным вопросом - не суть важно) и сравнивает её с датой которая была в xml.
Плюс решения - очень легко проверить надо скачивать или нет.
Минус - в тех случаях когда что то обновилось - все равно придется перекачать все.

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

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы