Есть ли противопоказания против хранения массива разделами сайта в локальном хранилище?
Перевожу на Vuex свое SPA приложение. Хотел бы уточнить пару моментов.
После логина приложение получает token и expired_data - я сразу кладу эти значения в localstorage и параллельно заношу в state эти параметры как и имя пользователя. Но каждый раз у меня загружается статическое меню. Можно ли мне его хранить в локальном хранилище и при загрузке приложения проверять его наличие там и если оно есть, то загружать его оттуда, а не слать запрос к серверу? Я и в state его кладу. но этого недостаточно, поскольку при перезагрузке сайта данные не сохранятся.
Правильно ли при открытии приложения брать данные token из хранилища и заполнять им state и автоматически, получается давать доступ в админку без требования залогиниться?
Может лучше использовать кеш браузера? Это логично и всяко удобнее чем ханить такие данные в отдельном хранилище, следить за их форматом и т.п.
Выгружайте ваше меню отдельным запросом, укажите у него время экспирации в заголовках, и браузер сам будет контролировать есть ли это меню в кеше или нет.
плюс - когда мы храним в кэше - это одно. мы храним часть верстки. Но SPA приложение же не кэшируется.
А когда мы храним в локальном хранилище данные, они туда помещаются в виде json массива (если речь идет о меню) и это не так накладно. Если меню стандартное мелкое без всякой вложенности каталога товаров или статей.
Как то не очень понятно...зачем каждый раз загружается статическое меню.
Я тоже после логина храню токен в локалсторадже. В стейте я храню данные юзера и исходя из этих данных, какая роль отрисовываю меню, которое лежит в App.vue и оно не перезагружается каждый раз при переходе по роутам.
При рефреше страницы проверяю наличие токена в сторадже если он есть получаю с сервера данные о юзере и рисую меню.
я не понимаю зачем вам где то кешировать данные которые у вас уже есть в index.html? вы формируете на их основе меню так долго что это нужно оптимизировать?
Вы не совсем поняли меня. Меню генерируется на стороне сервера потому что оно зависит от прав пользователя ну и обновляется иногда. Пользователь посылает запрос к серверу чтобы считать меню. Но этого делать нет необходимости если его токен уже сохранен во временном хранилище. В этом же хранилище я уже храню меню. А статично в файле с кодом не этично хранить данные. Данные должны лежать в базе данных в настройках.
Запрос меню на сервер должен содержать правильные заголовки Cache-control, но осторожно, он должен в ссылке содержать идентификатор пользователя (инче настройки меню новому пользователю приедут из кеша от старого)