Sobes.tech
Middle+
28

Бұл SSR коды мен singleton i18n класы бар кодты қараңыз. Пайдаланушыға жеткізілетін HTML-ді бүлдіруі мүмкін маңызды мәселені табыңыз. Оны қалай түзесіз?

Сұралған компаниялар
Mayflower

AI-дан жауап

sobes.tech AI

Проблема с singleton i18n классом в SSR заключается в том, что состояние локализации хранится глобально и разделяется между всеми запросами. Это приводит к тому, что при параллельных запросах пользователи могут получить HTML с неправильным языком — данные локализации могут перезаписываться.

Как исправить:

  • Не использовать singleton для хранения состояния локализации.
  • Создавать отдельный экземпляр i18n для каждого запроса, чтобы локализация была изолирована.
  • Передавать нужный язык явно в функции рендеринга.

Пример:

function createI18n(lang) {
  return new I18n(lang);
}

app.get('*', (req, res) => {
  const i18n = createI18n(req.language);
  const html = renderApp({ i18n });
  res.send(html);
});

Так мы избегаем гонок и гарантируем корректный язык для каждого пользователя.