Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
Привет всем. Реализую сервис где пользователи выкладывают свои фотографии и могут ставить друг другу лайки. использую asp.net mvc c#, все полностью пишу с нуля. для вывода блоков с фотографией использую автоподгрузку, с начало выгружаю 9 блоков с фото, когда пользователь прокручивает до конца экрана отправляется последний Id на сервер, и выбираются следующие фото где lastId < IdPhoto Тут все работает как часы! Но так же хочу отсортировать фото по количеству лайков и выводить их. Само кол-во лайков у фото может меняться в любой момент времени и это значит что блоки с фотографиями будут задваиваться или пропускаться..... Посоветуйте как мне делать выборку последующих фотографий? мне по идее проще всего где-то хранить Id уже выгруженных фотографий и при последующем запросе удалять те что уже выгрузил, так? Или есть другие варианты? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2017, 18:22 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
yardieи выбираются следующие фото где lastId < IdPhoto page = 2 выводить постранично yardieСамо кол-во лайков у фото может меняться в любой момент времени и это значит что блоки с фотографиями будут задваиваться или пропускаться... проблема... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2017, 18:58 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
можно просто следующие фото где skip 20 не суть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.01.2017, 19:10 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
Парамон, по странично нельзя именно автоподгрузка! Skip() пропускает определенное количество элементов, в моем случае не подходит... дело в том что я каждый раз делаю запрос, и вывожу порциями по 9 фото. в моем случае лайки могут ставиться и убираться ежесекундно, это задает некую динамику. и сортировка фото по кол-ву лайков будет при каждом запросе новая. хранить в памяти миллион, а со временем и несколько миллионов выбранных элементов тоже не правильно... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 10:21 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
yardieпо странично нельзя именно автоподгрузка! не вижу противоречий! yardieв моем случае лайки могут ставиться и убираться ежесекундно, это задает некую динамику. и сортировка фото по кол-ву лайков будет при каждом запросе новая. придется с этим жить ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 10:38 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
Парамонyardieпо странично нельзя именно автоподгрузка! не вижу противоречий! yardieв моем случае лайки могут ставиться и убираться ежесекундно, это задает некую динамику. и сортировка фото по кол-ву лайков будет при каждом запросе новая. придется с этим жить ) во первых такая идея чтобы была автоподгрузка, постраничная разбивка не катит с этим жить не придется, вконтакте так реализовали, не могу разобрать что они сделали, значит реализовать можно ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 10:47 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
yardieПарамонпропущено... не вижу противоречий! пропущено... придется с этим жить ) во первых такая идея чтобы была автоподгрузка, постраничная разбивка не катит с этим жить не придется, вконтакте так реализовали, не могу разобрать что они сделали, значит реализовать можноВзгляните с другой стороны. Страница - это 9 блоков. Пользователь проматывает вниз, подгружается следующая страница: следующие 9 блоков. А насчёт "вконтакте так реализовали"... Так откройте вкладку Network в браузере и посмотрите запрос с какими параметрами уходит на сервер при прокрутке страницы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 11:29 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
yardieс этим жить не придется, вконтакте так реализовали видать кэшируют ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 12:37 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
skyANAСтраница - это 9 блоков. Пользователь проматывает вниз, подгружается следующая страница: следующие 9 блоков. еще подсказка - page = 3 это skip 18 ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 12:53 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
Вот есть тюториал. https://msdn.microsoft.com/en-us/library/aa581771.aspx Конкретно, всё же, я думаю, постраничный вывод вам нужен https://msdn.microsoft.com/en-us/library/bb445504.aspx . Там по ссылке в том числе и постраничный вывод динамически меняющихся данных разобран (только там удаление разобрано). Не факт, что вам поможет, но всё же. Вообще, Вконтакте тот же - там часто в галареях попадаются дубликаты. Причём и по три раза (не уверен) могут быть. Но двойки видел совершенно точно, и очень много. Также могут быть пустышки, на которых явно должна была быть фотка, но она не непрогрузилась, а просто была исключена из запроса, судя по всему. Вывод - вконтактщики просто оставили такой баг. Можно, конечно, придумать сложный механизм, который путём заведения кучи кешей и списков "уже просмотрено" и тому подобных будет эффективно удалять дубликаты и вставлять новые элементы, которые вдруг стали удовлетворять запросу, потому что кто-то прямо сейчас поставил лайк или дизлайк, но проще объявить это фичей и оставить как есть. Если глаза сильно не мозолит, то всем будет плевать. Идём в ВК, ищем юзера с фотками https://vk.com/search?c [age_from]=18&c[age_to]=18&c[name]=1&c[photo]=1&c[q]=%D0%B0%D0%BD%D1%8F&c[section]=people&c[sex]=1&c[status]=6 Смотрим фотки https://vk.com/anna_egorova_2000?z=albums203670003 Крутим немного вниз и видим повторяющиеся фотки https://vk.com/photo203670003_368722064?all=1 https://vk.com/photo203670003_368722049?all=1 их полно, и они подряд, что ещё хуже По какой причине это произошло? - Неважно. Скорее всего, дело не в лайках или дизлайках, а в чём-то другом (фотки по умолчанию по дате добавления сортируются). Главное, что ВК пофиг, что у юзеров аж подряд могут одинаковые фотки идти. Число юзеров ВК от этого явно не уменьшается. Вывод - забить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 18:41 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
авторКонкретно, всё же, я думаю, постраничный вывод вам нужен Т. е. вы предыдущую страницу не убираете, а добавляете новую к старым страницам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 18:42 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
Rocketeer88888авторКонкретно, всё же, я думаю, постраничный вывод вам нужен Т. е. вы предыдущую страницу не убираете, а добавляете новую к старым страницам. Но это только на клиенте. Запрос к БД, конечно, постраничный. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 18:43 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
Проблемы начнутся только при очень активном изменении набора. Например, сотня юзеров очень быстро лайкает-дизлайкает список из тысячи фоток, а другие этот список активно прокручивают. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 18:49 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
Вообще, в зависимости от требований и желания углубляться в проблемы, можно по-разному формализовать задачу. Ну вот несколько разных подходов, которые можно ещё на подварианты разбить. 1. Чисто логически, если сортировка по числу лайков, а фотка получила другое число лайков, то это теперь новая фотка с точки зрения запроса . И пусть на ней изображено то же самое, но запрос же по лайкам, а не по содержимому. То, что юзер прокрутил - это уже история. 10 секунд назад фотка имела 20 лайков, а теперь - 21. Значит, её надо показать снова - вместе с теми, которые имеют 21 лайк. 2. Вот если бы пользователь попросил 1) сортировать по лайкам, 2) не дублировать старые, 3) учитывать новые, то это другое дело. Но здесь без запоминания "уже просмотренных" и "новых, попавших в диапазон по числу лайков" не обойтись - т. е. надо хранить эти дополнительные списки и динамически их обновлять, в засисимости от активности пользователей в данной галерее. Также надо решить вопрос с добавлением-удалением фоток. Т. е. юзеры же могут не только смотреть, лайкать и дизлайкать фотки во время просмотра другим юзером, а и обычные CRUD операции совершать ещё над ними. Так что вопрос лайков-дизлайков тут ещё не самый сложный. 3. Таки сделать слепок списка фоток и заморозить его на время запроса пользователя. Т. е. пока юзер листает галерею, сохраняется где-то слепок списка фоток на время первого захода юзера в эту галерею. Слепок действует только относительно этого юзера, а для других - свой слепок. 4. Таки кешируем вообще всю галерею и обновляем кеш периодически. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 19:06 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
Ну а по дубликатам есть, вроде, вполне решения - от использования distinct в запросе, до каких-то кастомных правил. Гуглите "paging without duplicates" https://skelia.com/articles/pagination-with-dynamic-data-loading-2/ http://stackoverflow.com/questions/10187066/how-do-i-remove-duplicates-in-paging ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 19:18 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
Может оказаться дорого с точки зрения вычислительных ресурсов, но будет работать точно. Лайки собираешь в отдельную таблицу, где для каждого лайка фиксируешь дату. При первоначальной отгрузке страницы клиенту запоминаешь текущую дату-время и делаешь что-то типа: Код: sql 1. 2. 3. 4. 5. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 19:43 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
Rocketeer88888, Спасибо, достаточно много информации дли, буду разбираться ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 21:38 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
yardieСамо кол-во лайков у фото может меняться в любой момент времени и это значит что блоки с фотографиями будут задваиваться или пропускаться..... Всё зависит от того, как хранятся лайки. Если каждый лайк это запись с временной меткой, значит можно брать временную метку начала просмотра и пейджить считая лайки относительно неё, т.е. не учитывать изменения по лайкам после загрузки страницы. В целом, я считаю, это наиболее адекватное решение. Любое изменение сортировки и направления, в том числе обновление страницы сбрасывает временную метку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 21:59 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
Нахлобуч, а, ты уже предложил ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.01.2017, 21:59 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
Кстати, а такая ситуация нормальная? Заходим на главную страницу пользователя. Видим, что у него столько-то фотографий. Жмём на них - "пользователь не разрешил показывать свои фотографии". Крутим ленту пользователя до первой фотки из его галереи. Жмём на эту фотку. Внизу есть ссылка на галерею, в которой эта фотка. А вверху - "хлебные крошки" до самого корня галереи - до всех фоток пользователя. И что толку, что "пользователь не разрешил"? Как минимум, уже несколько лет такое вижу. Тоже "не баг, а фича"? Это к вопросу "а как там у больших дядей?". Правда, не факт, что то, что прощают большим дядям, простят и вам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2017, 07:33 |
|
||
|
Вывод постов сортированных по количеству лайков (Автоподгрузка)
|
|||
|---|---|---|---|
|
#18+
То же самое - когда поиск пользователей из ВК. Если юзер поставил фотку на свою аватару, то, даже если он не разрешил смотреть свои фотки, можно кликом по этой аватаре перейти в галерею и всё посмотреть. Причём главная пользователя может быть вообще чистая - явно пользователь думает, что "спрятался" и никому ничего не видно, только для "своих" видно. А на самом деле любая фотка (хоть на аватаре, хоть в комменте) ведёт в галерею с полным доступом ко всем фоткам. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.01.2017, 07:37 |
|
||
|
|

start [/forum/topic.php?fid=18&msg=39382739&tid=1355640]: |
0ms |
get settings: |
9ms |
get forum list: |
17ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
27ms |
get topic data: |
10ms |
get forum data: |
2ms |
get page messages: |
78ms |
get tp. blocked users: |
2ms |
| others: | 264ms |
| total: | 415ms |

| 0 / 0 |
