Как выполнить настройку тяжелого приложения AJAX - PullRequest
3 голосов
/ 06 декабря 2010

Я разрабатываю приложение для поиска изображений / профилей, основанное почти исключительно на AJAX. Главная страница в основном отображает изображения профиля и позволяет пользователю фильтровать / искать и разбивать на страницы.

Разбиение на страницы работает, когда пользователь выполняет прокрутку, поэтому интерфейс должен быть очень-очень быстрым . На главной странице будет отображаться только 6 (возможно, 9, но определенно не больше) изображений, поэтому пользователи будут много прокручивать. В настоящее время я использую очень простой JS-кеш для хранения результатов всех запросов на тот случай, если пользователь решит вернуться ... в этом случае я просто вытаскиваю все из кеша вместо запроса к серверу.

Клиентский кеш

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

Но моя самая большая проблема - фильтрация / поиск , так как это полностью меняет тип запроса, отправляемого на сервер. Мои фильтры не очень сложны, всего около 6-7 атрибутов string / number / enum.

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

Здесь возникает вопрос, должен ли я сделать кеш как-то постоянным? Может, сохранить его в печенье?

Серверный кеш?

Одним из предложений может быть использовать memcached на сервере и просто хранить там все. Я определенно собираюсь кэшировать все результаты, которые могу, но это не спасает сервер от обработки нагрузок. и множество запросов AJAX.

Я разрабатываю это приложение на Rails 3, и хотя мне это нравится, я бы не сказал, что это самая быстрая вещь в мире. Другой вариант, который мне дает, - это создать отдельное приложение Rack / Sinatra для обработки только запросов AJAX. Под этим я подразумеваю запросы из основного запроса, а не все AJAX.

S3 для изображений?

Большую часть этого приложения составляют изображения, даже если они в основном представляют собой миниатюры (если пользователь не хочет отображать их больше).

В настоящее время у меня нет проблем с пропускной способностью. Мой VPS-хост предоставляет мне 200 ГБ, чего должно быть более чем достаточно (я надеюсь). Проблема в скорости загрузки. Поможет ли мне загрузить все изображения в S3 и загрузить их оттуда, или это стоит делать только для больших файлов? Я собираюсь загрузить много изображений размером 100x150px , размер которых обычно не превышает 50 КБ.

1 Ответ

2 голосов
/ 06 декабря 2010

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

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