У меня есть веб-сайт с несколькими страницами.
Некоторые из этих страниц нуждаются в userId и userName для любой обработки в контексте JavaScript.Шаблон, чтобы сделать userId доступным для JavaScript без перебора кеша
Примечание: идентификатор пользователя не используется для обеспечения безопасности и не отправляется обратно на сервер, поэтому спуфинг не является проблемой.
Вопрос: что такое хороший способ передать userId и userName в контексте JavaScript.
UPDATE В идеале я хотел бы общий шаблон, который может быть использован для передачи каких-либо данных (например, значения по умолчанию для списка сортировки и фильтрации настроек) с сервера кода JavaScript, так что я не решить USERID проблема иначе, чем проблема передачи значений initialSort и initialFilter.
Вот несколько подходов, о которых я мог думать. Я понимаю, что все это будет работать, но я надеюсь на еще лучшую модель. Я также заинтересован в изучении других минусов решений я рассматриваю здесь:
1. Pass ID_пользователь и имя_пользователь от сервера в качестве несерверного печенья.
Против: cookie будет отправлен обратно на сервер с каждым запросом, который является отходами (хотя и не значительным).
2. Использование пользовательских заголовков
Минусы: заголовки не доступны JavaScript для первоначального запроса.
3. запрос Сделать AJAX, чтобы получить данные
Минусы: требует дополнительной поездки HTTP.
4. Визуализация данных в режиме онлайн в начальной страницы HTML
Минусы: бюсты кэш и делает страницы не-Cacheable.
5. Переключатель полярности (работает каждый раз, когда в Star Trek), мой любимый до сих пор
Вместо того, чтобы большинство HTML на начальной поездки - переписать страницу так, что начальная страница возвращает основном данные, в то время как разметка загружается (и кэшируется) отдельно. Например:
<html><body>
<div data-bind="template: 'pages/invoices'" /> <!-- using KO external template to load markup -->
<script src="require.js"></script>
<script>
require([...], function (...) {
var vm = new PageViewModel('userId-bob', 'Bob Smart'); // <-- content rendered by server
ko.applyBindings(vm);
});
</script></body></html>
Против: страница поисковых роботов враждебна (не проблема в моем случае).
Где большинство ваших данных, поступающих из на данный момент? Включается ли она на начальную страницу или загружается позже через AJAX? В зависимости от вашей ситуации *, что * данные вряд ли будут кэшируемыми в любом случае, поэтому я бы рекомендовал включить его с этим (также, вероятно, случай, когда userId бесполезен без данных, и наоборот, так что это решение еще более подходит). – Matt
Является ли localStorage возможностью? – danronmoon
Я думаю, что сделать дополнительный запрос для userId и что бы это было самое маленькое изменение кода, чтобы исправить эту конкретную проблему. Если эта же ситуация продолжает поступать, стоит обратиться по-другому: рендеринг встроенных данных в HTML или добавление промежуточного программного обеспечения учетных данных пользователя на серверный шаблон шаблонов. Для ситуации с 1-го или первого рода, я думаю, что запрос AJAX достаточно хорош. Возможно, измените конструктор PageViewModel, чтобы получить информацию о пользователе, если он не указан? Сначала исправьте его и разработайте шаблон, если ситуация повторяется. –