Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 21.06.2012, 22:46
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Отследить изменения в документе на сервере.
На моем сервере имеется некий json файл, например:
[
  {
    "name": "Vasya",
    "age": "20",
    "contacs": {
      "tel": "123",
      "mail": "vasya@vasya.com"
    }
  },
  {
    "name": "Petya",
    "age": "20",
    "contacs": {
      "tel": "123",
      "mail": "petya@petya.com"
    }
  }
]

Я загружаю его аяксом и генерирую из него таблицу
$.ajax({
    url: 'base.json',
    dataType: 'text',
    success: function (data) {
        callBack(data);    // Обрабатываю данные, генерирую таблицу
    }
});


Теперь мне нужно, например, каждую минуту (60 сек.) проверять не изменился ли документ, и если изменился то загрузить и перегенерировать таблицу.

Вопрос: Как правильно реализовать наблюдение за этим файлом? Хочется с минимальным траффиком, так как документ увесистый.
Ответить с цитированием
  #2 (permalink)  
Старый 21.06.2012, 22:53
что-то знаю
Отправить личное сообщение для devote Посмотреть профиль Найти все сообщения от devote
 
Регистрация: 24.05.2009
Сообщений: 5,176

проверять время изменения файла, если не совпадает с предыдущим.. значит внесли изменения
__________________
хм Russians say завтра but завтра doesn't mean "tomorrow" it just means "not today."
HTML5 history API рассширение для браузеров не поддерживающих pushState, replaceState
QSA CSS3 Selector Engine
Ответить с цитированием
  #3 (permalink)  
Старый 21.06.2012, 22:59
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Сообщение от devote
проверять время изменения файла, если не совпадает с предыдущим.. значит внесли изменения
Как проверять? Опиши подробней.
У меня nginx стоит и он после первой загрузки этого файла отдает заголовок HTTP 304, я пробовал ориентироваться на этот статус. Но у меня никак не удается его отловить, постоянно ajax.status === 200
Ответить с цитированием
  #4 (permalink)  
Старый 21.06.2012, 23:09
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Magneto,
При сохранении дописывать хеш в секундах текущей даты, в виде добавки к base.json?1340304169;
И первой переменной в самом json тож дату прописываем
А На клиенте нун добавлять случайный хеш
$.ajax({
    url: 'base.json?'+Math.random,
    dataType: 'text',
    success: function (data) {
        callBack(data);    // Обрабатываю данные, генерирую таблицу
    }
});

Последний раз редактировалось Deff, 21.06.2012 в 23:15.
Ответить с цитированием
  #5 (permalink)  
Старый 21.06.2012, 23:13
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Сообщение от Deff
Magneto,
При сохранении дописывать хеш в секундах текущей даты, в виде добавки к base.json?1340304169;
И тогда я каждую минуту его буду загружать.
Ответить с цитированием
  #6 (permalink)  
Старый 21.06.2012, 23:17
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Magneto
И тогда я каждую минуту его буду загружать.
Тестируйте просто get аякс запросом без файла - на которые серв и дает ответ(к примеру полное имя файла с хешем)
По анализу последнего - грузите - не грузите файл
Ответить с цитированием
  #7 (permalink)  
Старый 21.06.2012, 23:25
Аватар для Magneto
Люмус, Емаксос Developer!
Отправить личное сообщение для Magneto Посмотреть профиль Найти все сообщения от Magneto
 
Регистрация: 06.05.2010
Сообщений: 677

Я думал об этом, но так вышло что я не могу создавать еще какие либо файлы или самому модифицировать основной существующий json файл.

Пока я вижу два выхода:
1. Работать с заголовком ответа 304 и временем модификации.
2. Или каждый раз полностью загружать json файл (а он довольно увесистый) и сравнивать с имеющимся.
Ответить с цитированием
  #8 (permalink)  
Старый 21.06.2012, 23:28
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от Magneto
1. Работать с заголовком ответа 304 и временем модификации.
Вы не можете кроссбраузерно определить 304
Ие(по крайней мере до 9) Будет вам выдавать 200, как и при первом получении ( про остальные не помню - но есть и там в некоторых аналогичное
Ответить с цитированием
  #9 (permalink)  
Старый 22.06.2012, 01:11
Профессор
Отправить личное сообщение для DjDiablo Посмотреть профиль Найти все сообщения от DjDiablo
 
Регистрация: 04.02.2011
Сообщений: 1,815

Цитата:
Или каждый раз полностью загружать json файл (а он довольно увесистый) и сравнивать с имеющимся.
Да ну нафик,
нафига жирный json туда сюда таскать.

1)Все сравнения только на сервере.
2) Опрашивай каждые 60 секунд.
3) возвращай два типа json файлов,
один когда изменились данные, это json файл полностью,
второй если нефига не изменилось (1 строчку), ну примеру {reload:false}.

упс незаметил что модифицировать ты не можеш. Ну тогда боюсь придётся целиком.
Ну или заведите вспомогательный скрипт посредник на другом сайте, и пусть он забирает json с твоего сайта по мере необходимости, но не чаще чем раз в 60 секунд. А клиент будет забирать json уже у посредника.
__________________
Лучше калымить в гандурасе чем гандурасить на колыме

Последний раз редактировалось DjDiablo, 22.06.2012 в 01:25.
Ответить с цитированием
  #10 (permalink)  
Старый 22.06.2012, 01:28
без статуса
Отправить личное сообщение для Deff Посмотреть профиль Найти все сообщения от Deff
 
Регистрация: 25.05.2012
Сообщений: 8,219

Сообщение от DjDiablo
упс незаметил что модифицировать вы не можете. Ну тогда боюсь придётся целиком.
Ну или заведите вспомогательный скрипт посредник на другом сайте, и пусть он забирает json по мере необходимости но не чаще чем раз в 60 секунд, а клиент будет забирать json уже у посредника.
Вот решение нормальное - сторонний вспом сайт тестит и организует файл.json - статус изменений большого json файла на хост сервере
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
CouchDB - как от устанавливается на сервере? macdack Серверные языки и технологии 0 22.04.2012 17:09
Написать скрипт, создающий ссылку на страницу, находящуюся на вашем сервере. Ирина Владимировна Общие вопросы Javascript 1 28.03.2012 19:02
Как с помощью PHP сохранить какие-либо изменения в HTML документе? FirstFrost Работа 6 06.09.2010 16:16
Как с помощью PHP сохранить какие-либо изменения в HTML документе? FirstFrost Общие вопросы Javascript 1 15.07.2010 17:12
Как с помощью JavaScript сохранить какие-либо изменения в HTML документе? FirstFrost Общие вопросы Javascript 1 15.07.2010 16:23