Лучший способ сделать пейджинг на странице .NET - PullRequest
2 голосов
/ 30 июля 2010

Надеюсь, у вас замечательный день.

У меня есть страница, на которой я разрешаю пользователям просматривать связанные элементы (фотоальбомы), опубликованные другими пользователями. Я показываю миниатюру альбома, название, автора, оценки рейтингов и категории для каждого альбома.

Теперь количество связанных элементов может увеличиться, скажем, 500 фотоальбомов связано с альбомом, который просматривает пользователь. Я просто показываю первые 20 и опускаю ссылку с надписью «Просмотреть все»

Как только пользователь нажимает «Просмотреть все», я перехожу на страницу, где отображаются 50 элементов на странице.

Вариант 1: использование повторителя \ управления сеткой Когда пользователь нажимает на страницу, я получаю нужные элементы (используя sql) и привязываю результат к сетке. Страница обновляется, и пользователь видит новую страницу. Таким образом, один большой запрос и пользователь видит все большие пальцы.

Вариант 2: когда пользователь нажимает на пейджер, я использую Ajax, чтобы получить имя миниатюры, название, рейтинг, автора и т. д. Затем я строю сетку вручную и устанавливаю атрибут src элемента, используя javascript Затем я добавляю полученную сетку в div. Пользователь видит новую сетку без обновления страницы.

Мои проблемы: У меня есть эскизы и все файлы изображений в файловой системе (не базы данных) Во втором подходе javascript отправит 50 отдельных запросов на веб-сервер для получения файлов изображений. Это вызовет много запросов на веб-сервере. Крупные параллельные пользователи будут загружать сервер запросами файлов изображений.

Каков наилучший и эффективный способ подкачки и хранения пользовательских файлов?

Мое приложение умрет, поместив изображения в файловую систему, так как приложение должно обрабатывать миллионы фотографий?

Ответы [ 2 ]

2 голосов
/ 30 июля 2010

Если вы еще не используете его, вам поможет CDN (сеть доставки контента, такая как Amazon S3 и т. Д.) (Так что вы можете загружать из нескольких мест одновременно).

Кроме того, вместо запроса одного изображения, запросите страницу с сервера. Пусть сервер решит, сколько изображений вернуть.

Вы можете попробовать некоторые техники css-спрайтов.

2 голосов
/ 30 июля 2010

Определенно, вы не должны использовать Вариант 1, так как загрузка страницы займет много времени

Также не так хорош второй альтернативный идентификатор.

Вы можете использовать свойGridView / ListView элемент управления, но использовать подкачку на стороне сервера для получения данных.Таким образом, вы можете загрузить только ту информацию, которая необходима для каждой страницы.

Вы можете увидеть, как реализовать хранимую процедуру для подкачки на стороне сервера, здесь: http://www.sqlteam.com/article/server-side-paging-using-sql-server-2005

Затем вы можете привязать отдельного человеказапишите обработчик события PageIndexChanging вашего Gridview, чтобы загружалась только нужная страница.

...