Шаблон подкачки для приложения ajax - PullRequest
1 голос
/ 24 марта 2012

Я создаю AJAX-приложение, и у меня есть выбор, как структурировать функциональность подкачки данных. По сути, пользователь собирается работать с 1000-2000 записей, но только 20 записей одновременно загружаются из БД, отправляются клиенту и затем кэшируются в локальном хранилище сеансов. Эти записи являются строками json, которые содержат свойство объекта (в основном запись клиента).

Вот два варианта, давайте предположим, что мы работаем с 1500 записями и каждая страница имеет длину 20 записей. Дилемма - где хранить 1500 идентификаторов записей.

Вариант 1: Идентификаторы 1500 записей хранятся в виде списка int в сеансе сервера , сериализуются и десериализуются для каждого запроса. Клиент не знает идентификаторов записей каждой страницы и просто запрашивает номер страницы. На сервере, когда пользователь запрашивает страницу X, мы смотрим на список int и определяем идентификаторы записей для страницы X, загружаем эти записи и отправляем клиенту строки json с этими идентификаторами. Недостатком здесь является то, что в сеансе сервера у нас есть список из 1500 int. Плюс в том, что когда мы запрашиваем страницу, мы отправляем серверу только int.

Вариант 2: Идентификаторы 1500 записей отправляются клиенту, когда пользователь входит в систему, а затем этот список сохраняется в локальном сеансе хранения . Когда пользователь запрашивает страницу X, функция javascript определяет, какие идентификаторы записи находятся на странице X, и отправляет серверу сериализованный список json размером 20 дюймов. Затем сервер возвращает записи с этими идентификаторами. Положительным моментом является то, что сеанс на стороне сервера намного легче, и это должно повысить производительность (не нужно читать / записывать / сериализовать этот список при каждом запросе) и, вероятно, быть более масштабируемым. Недостатком является то, что каждый раз, когда мы запрашиваем страницу, мы отправляем серверу список из 20 дюймов.

Я полагаюсь на вариант 2: это лучший способ сделать это?

Примечание 1) что я требую от пользователей поддержки локального хранилища HTML5 и 2) реализация на стороне сервера будет Azure и WCF.

1 Ответ

0 голосов
/ 24 марта 2012

Возможно, я неправильно понимаю, но я не совсем понимаю ваш подход. Если вы знаете длину страницы и знаете номер требуемой страницы, почему вы не можете отправить их вместе с параметрами в качестве параметра на сервер в вашем вызове ajax, а затем ограничить это в своем выражении sql для db. Что я хочу сказать, так это смысл знать эти идентификаторы в первую очередь. Например, посмотрите, как плагин jquery datatables выполняет разбиение на страницы здесь: http://www.datatables.net/examples/server_side/server_side.html. Как вы можете видеть, они используют метод публикации номера страницы и местоположения страницы на сервере. Затем довольно легко ограничить количество строк, которые вы хотите вернуть, основываясь на этом (по крайней мере, в Oracle, MySQL и MS SQL). Если я полностью не упустил момент, в таком случае, пожалуйста, дайте мне знать.

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