2016-12-01 6 views
4

Итак, я рассматриваю возможность переноса всего нашего объекта перевода в хранилище редуктов, прежде чем увлажнять клиента. Этот объект перевода составляет около 50kb gzipped, а 115kb несжатый.Насколько велика слишком большая для магазина redux?

Весь наш сайт переведен, поэтому этот объект перевода в основном представляет собой нединамическую копию на веб-сайте. Если он был увлажнен клиентом по первоначальному запросу HTTP, он должен обеспечить мгновенный просмотр, по крайней мере, для внутренней копии.

Однако, мне интересно, так ли это, слишком большой для магазина redux?

ответ

4

Вы должны загрузить переводы отдельно. Webpack позволяет разделить код, который может помочь. Или вы можете просто использовать тег скрипта.

Причина для его загрузки отдельно, так что браузер может ее кешировать. Это позволяет загружать его только один раз для каждого пользователя. Так как HTML-страница, созданная React, является динамической, и хранилище, которое вы передаете, также является динамическим, их нельзя кэшировать.

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

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

3

Я не думаю, что для магазина Redux существует слишком большой размер. Однако он должен содержать только состояние приложения. Объекты перевода должны быть в коде, и вы должны получить к ним доступ через библиотеку i18n. В состоянии должно быть столько поля, которое указывает, какой язык вы должны показывать пользователю.

+0

Незначительный и субъективный ... Внутри магазина _is_ "в коде". Кроме того, существует [множество решений] (https://github.com/zoover/react-redux-i18n), которые включают данные перевода непосредственно в хранилище. У вас есть что-то более конкретное, или это просто ваше мнение? Чтобы быть ясным, я бы не стал обращаться к ключам непосредственно внутри государства, а просто загружал их там и указывал на него. –

+0

@ JohnDoe, конечно, это мое мнение, вы можете сохранить все, что захотите, в магазине, но, как говорит первая строка документации Redux, это «контейнер состояния». Зачем вам сохранять все статические данные, которые не представляют глобальное состояние приложения? –

+0

Я имею в виду, что это «состояние» в некотором смысле, что пользователи могут свободно изменять язык пользовательского интерфейса. Локализованный контент на самом деле является «состоянием» приложения. –

 Смежные вопросы

  • Нет связанных вопросов^_^