Прогрессивная загрузка, ASP.NET MVC - PullRequest
1 голос
/ 09 февраля 2010

У меня есть страница, которая должна отображать огромный набор результатов запросов - большинство из них с очень и очень маленькими изображениями. Он уже разбит на страницы, так что это не решит мою проблему.

Запрос выполняется нормально - он очень быстрый, возвращается примерно за 0,0004 секунды, разбивает себя на страницы - все хорошо в стране Оз.

Однако есть большая проблема в том, что ASP.NET MVC сбрасывает страницу, когда она готова, а не так, как она загружена. Есть ли способ обойти это?

Я пытался использовать jQuery для прорисовки слоев div и рисования частичных представлений - это облегчило некоторые проблемы, но все еще просто «зависало» на странице, пока все не было готово для рисования.

Я осмотрелся и нашел несколько предложений по использованию Response.Write - но я не смог найти ничего, имеющего отношение к моему делу. Есть идеи? Структура выглядит следующим образом ...

PartialView
- Category
  - IEnumerable<Models.Images> (List)

PartialView
- Page
  - IEnumerable<Models.Images> (List) (Paginated View)

View
- Gallery
-- Index
--- Categories (Ajax Loaded on Demand, not on View render.)
---- ViewPage (No specific model passed)

Проблема явно в изображениях, я проверял это несколько раз. Если я удаляю теги из кода, он быстро рендерится с любыми данными, которые я ему сообщаю. Каждое изображение имеет размер около 4 КБ, поэтому сжатие их маловероятно.

Любая помощь будет принята с благодарностью.

Ответы [ 2 ]

5 голосов
/ 09 февраля 2010

Есть пара вещей, которые вы можете сделать.

Сначала убедитесь, что сами результаты не находятся внутри таблиц. IE (и, возможно, другие браузеры) должны подождать, пока таблица не будет полностью загружена, перед рендерингом в браузер.

Во-вторых, есть команда с именем Response.Flush , которая отправит буферизованный вывод клиенту. Вы можете называть это неоднократно. Вы можете назвать это для каждых 10 пунктов или около того, например. Если вы можете включить это в свой код, это должно помочь вам.

0 голосов
/ 09 февраля 2010

Сколько изображений загружается в данный запрос? Как я уверен, вы знаете, что проблема заключается не столько в размерах файлов, сколько в их количестве - требуется больше времени для перемещения группы небольших файлов, чем для файла одинакового размера.

Одна вещь, которую следует учесть, это отправить страницу с уже заполненным набором результатов определенного размера, а затем использовать JavaScript (и, возможно, события прокрутки) для динамической загрузки остальных. В идеале вы должны попытаться минимизировать размер первоначального запроса, чтобы страница не блокировала взаимодействие с пользователем на долгое время; после этого начального периода загрузки вы можете начать извлекать остальные результаты.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...