powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вывод постов сортированных по количеству лайков (Автоподгрузка)
21 сообщений из 21, страница 1 из 1
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39381762
Фотография yardie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Привет всем.
Реализую сервис где пользователи выкладывают свои фотографии и могут ставить друг другу лайки.
использую asp.net mvc c#, все полностью пишу с нуля.
для вывода блоков с фотографией использую автоподгрузку, с начало выгружаю 9 блоков с фото, когда пользователь прокручивает до конца экрана отправляется последний Id на сервер, и выбираются следующие фото где lastId < IdPhoto
Тут все работает как часы!

Но так же хочу отсортировать фото по количеству лайков и выводить их.
Само кол-во лайков у фото может меняться в любой момент времени и это значит что блоки с фотографиями будут задваиваться или пропускаться.....
Посоветуйте как мне делать выборку последующих фотографий? мне по идее проще всего где-то хранить Id уже выгруженных фотографий и при последующем запросе удалять те что уже выгрузил, так? Или есть другие варианты?
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39381792
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yardieи выбираются следующие фото где lastId < IdPhoto page = 2

выводить постранично

yardieСамо кол-во лайков у фото может меняться в любой момент времени и это значит что блоки с фотографиями будут задваиваться или пропускаться...

проблема...
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39381800
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно просто
следующие фото где skip 20
не суть
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382057
Фотография yardie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамон,

по странично нельзя именно автоподгрузка!

Skip() пропускает определенное количество элементов, в моем случае не подходит...
дело в том что я каждый раз делаю запрос, и вывожу порциями по 9 фото. в моем случае лайки могут ставиться и убираться ежесекундно, это задает некую динамику. и сортировка фото по кол-ву лайков будет при каждом запросе новая.
хранить в памяти миллион, а со временем и несколько миллионов выбранных элементов тоже не правильно...
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382071
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yardieпо странично нельзя именно автоподгрузка!

не вижу противоречий!

yardieв моем случае лайки могут ставиться и убираться ежесекундно, это задает некую динамику. и сортировка фото по кол-ву лайков будет при каждом запросе новая.

придется с этим жить )
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382083
Фотография yardie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Парамонyardieпо странично нельзя именно автоподгрузка!

не вижу противоречий!

yardieв моем случае лайки могут ставиться и убираться ежесекундно, это задает некую динамику. и сортировка фото по кол-ву лайков будет при каждом запросе новая.

придется с этим жить )

во первых такая идея чтобы была автоподгрузка, постраничная разбивка не катит

с этим жить не придется, вконтакте так реализовали, не могу разобрать что они сделали, значит реализовать можно
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382121
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yardieПарамонпропущено...

не вижу противоречий!

пропущено...

придется с этим жить )

во первых такая идея чтобы была автоподгрузка, постраничная разбивка не катит

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

Страница - это 9 блоков. Пользователь проматывает вниз, подгружается следующая страница: следующие 9 блоков.

А насчёт "вконтакте так реализовали"... Так откройте вкладку Network в браузере и посмотрите запрос с какими параметрами уходит на сервер при прокрутке страницы.
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382199
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yardieс этим жить не придется, вконтакте так реализовали
видать кэшируют )
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382219
Парамон
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAСтраница - это 9 блоков. Пользователь проматывает вниз, подгружается следующая страница: следующие 9 блоков.

еще подсказка - page = 3 это skip 18 )
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382618
Rocketeer88888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вот есть тюториал. 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

их полно, и они подряд, что ещё хуже

По какой причине это произошло? - Неважно. Скорее всего, дело не в лайках или дизлайках, а в чём-то другом (фотки по умолчанию по дате добавления сортируются). Главное, что ВК пофиг, что у юзеров аж подряд могут одинаковые фотки идти. Число юзеров ВК от этого явно не уменьшается. Вывод - забить.
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382621
Rocketeer88888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
авторКонкретно, всё же, я думаю, постраничный вывод вам нужен
Т. е. вы предыдущую страницу не убираете, а добавляете новую к старым страницам.
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382623
Rocketeer88888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rocketeer88888авторКонкретно, всё же, я думаю, постраничный вывод вам нужен
Т. е. вы предыдущую страницу не убираете, а добавляете новую к старым страницам.
Но это только на клиенте. Запрос к БД, конечно, постраничный.
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382637
Rocketeer88888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Проблемы начнутся только при очень активном изменении набора. Например, сотня юзеров очень быстро лайкает-дизлайкает список из тысячи фоток, а другие этот список активно прокручивают.
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382645
Rocketeer88888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Вообще, в зависимости от требований и желания углубляться в проблемы, можно по-разному формализовать задачу. Ну вот несколько разных подходов, которые можно ещё на подварианты разбить.


1.
Чисто логически, если сортировка по числу лайков, а фотка получила другое число лайков, то это теперь новая фотка с точки зрения запроса . И пусть на ней изображено то же самое, но запрос же по лайкам, а не по содержимому. То, что юзер прокрутил - это уже история. 10 секунд назад фотка имела 20 лайков, а теперь - 21. Значит, её надо показать снова - вместе с теми, которые имеют 21 лайк.


2.
Вот если бы пользователь попросил 1) сортировать по лайкам, 2) не дублировать старые, 3) учитывать новые, то это другое дело. Но здесь без запоминания "уже просмотренных" и "новых, попавших в диапазон по числу лайков" не обойтись - т. е. надо хранить эти дополнительные списки и динамически их обновлять, в засисимости от активности пользователей в данной галерее. Также надо решить вопрос с добавлением-удалением фоток. Т. е. юзеры же могут не только смотреть, лайкать и дизлайкать фотки во время просмотра другим юзером, а и обычные CRUD операции совершать ещё над ними. Так что вопрос лайков-дизлайков тут ещё не самый сложный.


3.
Таки сделать слепок списка фоток и заморозить его на время запроса пользователя. Т. е. пока юзер листает галерею, сохраняется где-то слепок списка фоток на время первого захода юзера в эту галерею. Слепок действует только относительно этого юзера, а для других - свой слепок.


4.
Таки кешируем вообще всю галерею и обновляем кеш периодически.
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382659
Rocketeer88888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну а по дубликатам есть, вроде, вполне решения - от использования 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
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382672
Фотография Нахлобуч
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Может оказаться дорого с точки зрения вычислительных ресурсов, но будет работать точно.

Лайки собираешь в отдельную таблицу, где для каждого лайка фиксируешь дату. При первоначальной отгрузке страницы клиенту запоминаешь текущую дату-время и делаешь что-то типа:

Код: sql
1.
2.
3.
4.
5.
select 
  p.Name,
  (select count(*) from Like l where l.PhotoID = p.ID and l.Date <= @initialDate) as Likes
from Photos p
order by Likes desc
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382724
Фотография yardie
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Rocketeer88888,
Спасибо, достаточно много информации дли, буду разбираться
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382739
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
yardieСамо кол-во лайков у фото может меняться в любой момент времени и это значит что блоки с фотографиями будут задваиваться или пропускаться.....

Всё зависит от того, как хранятся лайки. Если каждый лайк это запись с временной меткой, значит можно брать временную метку начала просмотра и пейджить считая лайки относительно неё, т.е. не учитывать изменения по лайкам после загрузки страницы. В целом, я считаю, это наиболее адекватное решение. Любое изменение сортировки и направления, в том числе обновление страницы сбрасывает временную метку.
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382740
Фотография hVostt
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нахлобуч,

а, ты уже предложил )
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382850
Rocketeer88888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, а такая ситуация нормальная? Заходим на главную страницу пользователя. Видим, что у него столько-то фотографий. Жмём на них - "пользователь не разрешил показывать свои фотографии". Крутим ленту пользователя до первой фотки из его галереи. Жмём на эту фотку. Внизу есть ссылка на галерею, в которой эта фотка. А вверху - "хлебные крошки" до самого корня галереи - до всех фоток пользователя. И что толку, что "пользователь не разрешил"? Как минимум, уже несколько лет такое вижу. Тоже "не баг, а фича"?

Это к вопросу "а как там у больших дядей?". Правда, не факт, что то, что прощают большим дядям, простят и вам.
...
Рейтинг: 0 / 0
Вывод постов сортированных по количеству лайков (Автоподгрузка)
    #39382851
Rocketeer88888
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
То же самое - когда поиск пользователей из ВК. Если юзер поставил фотку на свою аватару, то, даже если он не разрешил смотреть свои фотки, можно кликом по этой аватаре перейти в галерею и всё посмотреть. Причём главная пользователя может быть вообще чистая - явно пользователь думает, что "спрятался" и никому ничего не видно, только для "своих" видно. А на самом деле любая фотка (хоть на аватаре, хоть в комменте) ведёт в галерею с полным доступом ко всем фоткам.
...
Рейтинг: 0 / 0
21 сообщений из 21, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / Вывод постов сортированных по количеству лайков (Автоподгрузка)
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]