Как работают подписки?
Closed this issue · 10 comments
В документации дерби есть пример, когда подписка на несколько запросов задается с помощью одной функции
model.subscribe(user, todosQuery, function(err)...
Сокращает ли такая форма записи количество запросов которые получит сервер?
А по сравнению с чем? С:
model.subscribe(user, function(err){
model.subscribe(todosQuery, ...
});
Количество запросов на сервере, думаю, будет тем же, но в первом случае рендеринг будет совершен быстрее, так как все данные подтягиваются за один раз.
Ага, тоесть несколько запросов можно вложить в 1 пакет и тогда будет меньше нагрузка на канал, верно? Жаль, что поздно я это увидел в доках :-)
А вот тогда возможно ли в 1 подписку вложить переменное количество запросов? Например: model.subscribe [query0...queryN], (err)->
?
Ага, тоесть несколько запросов можно вложить в 1 пакет и тогда будет меньше нагрузка на канал, верно?
Ага.
А вот тогда возможно ли в 1 подписку вложить переменное количество запросов?
Можно, subscribe может принимать массив. То есть именно так и работает:
model.subscribe [query0, query1, ...queryN], (err)->
И (гипотетически) возможно ли группировать запросы для server-query?
не вижу проблем, то, что возвращает model.serverQuery - это абсолютно то же самое, что возвращается model.query, их так же можно засунить в массив и передать в subscribe
А как sharejs работает? Я спрашивал в чате, но что-то меня заигнорили
Если два человека посетили ленту, то монго получит 2 запроса или же запрос будет только под перого юзера, а второй получит данные которые недавно были отданы первому клиенту?
Аналогично с подписками, если они оба подписаны на ленту и прилетела новая запись, то дерби раздаст подписчикам один и тот же пакет, да?
не вижу проблем, то, что возвращает model.serverQuery - это абсолютно то же самое, что возвращается model.query, их так же можно засунить в массив и передать в subscribe
да, да я сначала написал, а потом в доки заглянул проверить и увидел, что нет разницы
А как sharejs работает? Я спрашивал в чате, но что-то меня заигнорили
Я еще не смотрел, но подозреваю, что 2 раза сработает. Это, кстати не в sharejs а в livedb надо смотреть. Я в свободное время (по выходным) кокпаюсь во внутренносятх livedb sharejs и т.д. и в следующую сессию планрую выяснить, но, сейчас праздники, поэтому не могу ничего обещать.
Но в любом случае, не стоит бояться кода этих библиотек, он вполне понятен, те же самы соединения и query там вполне себе в понятных местах храняться. Вряд ли много времени нужно, чтобы это выяснить самому.
Угу, но мне как-то фронт-энд ближе, очевидно что там нечего бояться и чужой код полезно читать. Но каюсь пока не погружался, мне фронт-энд интереснее.
По хорошему же нужно хешировать тело запроса и получать таким образом его ключ. И если прилетел запрос с тем же ключом, то брать его из редиса. Удобно же и просто.
Ну да, но нужно еще следить за количеством ссылок. Думаю, если этого еще нет, то можно без каких-то гипер усилий сделать.
Посмотрел как работает livedb:
Если два человека посетили ленту, то монго получит 2 запроса или же запрос будет только под перого юзера, а второй получит данные которые недавно были отданы первому клиенту?
2 запроса
Аналогично с подписками, если они оба подписаны на ленту и прилетела новая запись, то дерби раздаст подписчикам один и тот же пакет, да?
Здесь все выполняется за одно действие, не смотря на то, что клиентов 2
Артур, спасибо!