Есть ли предел тому, сколько данных я должен кэшировать в памяти браузера? - PullRequest
1 голос
/ 19 июля 2010

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

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

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

Ответы [ 4 ]

4 голосов
/ 19 июля 2010

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

3 голосов
/ 19 июля 2010

Будьте осторожны, когда делаете что-либо на стороне клиента, если вы хотите, чтобы ваши пользователи использовали мобильные устройства. В то время как у настольных компьютеров проблем не будет, Mobile Safari перестанет работать с (я полагаю) 10 МБ данных JavaScript. (См. эту статью для получения дополнительной информации о Mobile Safari). Другие мобильные браузеры, вероятно, имеют аналогичные ограничения памяти. Определите минимальный набор информации, которую вы можете вернуть, чтобы позволить пользователю выполнять поиск, а затем лениво загружать более богатые записи из REST API по мере необходимости.

В качестве альтернативы прокси для соответствующей службы REST и создайте собственный поиск на сервере, которым вы затем управляете. Вы можете сделать это довольно быстро и легко с Python + Django + XML Models . Без сомнения, существуют одинаково простые способы сделать это с любым предпочитаемым вами языком разработки. (Повторно читая, я вижу, что вы не можете выполнять кэширование на стороне сервера, что может поставить этот вопрос под сомнение).

1 голос
/ 19 июля 2010

Я бы посмотрел на распределенный серверный кеш.Если вы будете хранить данные в браузере по мере роста системы, вам придется увеличить время жизни кэша браузера, чтобы уменьшить трафик.

1 голос
/ 19 июля 2010

Вы можете безопасно управлять десятками тысяч записей в браузере. Я запускаю тесты поиска и сортировки с помощью jOrder (http://github.com/danstocker/jorder) для таких наборов данных без проблем.

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