Влияет ли способ перевода нашего веб-сайта на производительность?

Фон

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

Как работает наш сайт в настоящее время

Мы планировали сделать это, сохраняя перевод для каждого элемента страницы в базе данных, связанной с помощью Guid. Поэтому, когда страница загружается, строки извлекаются из базы данных с использованием Guid и языковых настроек пользователя.

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

public class StandardButtonToken : LocalisationToken
{
    protected StandardButtonToken(string defaultText, Guid key) : base(defaultText, key)
    {
    }

    public static readonly LocalisationToken Update = new StandardButtonToken("Update", Guid.Parse("8a999f5b-7ca1-466d-93ca-377321e6de00"));
    public static readonly LocalisationToken Go = new StandardButtonToken("Go", Guid.Parse("7a013ecc-0772-4f87-9f1f-da6a878a3c99"));
    public static readonly LocalisationToken Edit = new StandardButtonToken("Edit", Guid.Parse("c31be427-5016-475d-997a-96fa5ff8b51f"));
    public static readonly LocalisationToken New = new StandardButtonToken("New", Guid.Parse("f72d365c-b18f-4f01-a6e4-b0cd930dc730"));
    public static readonly LocalisationToken More = new StandardButtonToken("More", Guid.Parse("bd4da7df-afd2-481e-b6b6-b4a989324758"));
    public static readonly LocalisationToken Delete = new StandardButtonToken("Delete", Guid.Parse("ab00ec14-4414-4cda-a8e2-4f03c9e7c5a8"));
    public static readonly LocalisationToken Add = new StandardButtonToken("Add", Guid.Parse("01e44600-a556-4a07-8a2a-e69a1ea79629"));
    public static readonly LocalisationToken Confirm = new StandardButtonToken("Confirm", Guid.Parse("4c50e91e-3e2f-42fa-97aa-9f1f6f077f09"));
    public static readonly LocalisationToken Send = new StandardButtonToken("Send", Guid.Parse("24121766-f424-4d73-ac58-76f90d58b95c"));
    public static readonly LocalisationToken Continue = new StandardButtonToken("Continue", Guid.Parse("dd2ca0e5-8a35-4128-b2e8-db68a64a6fe5"));
    public static readonly LocalisationToken OK = new StandardButtonToken("OK", Guid.Parse("9a359f93-7c23-44ad-b863-e53c5eadce90"));
    public static readonly LocalisationToken Accept = new StandardButtonToken("Accept", Guid.Parse("3206a76b-1cd7-4dc3-9fff-61dfb0992c75"));
    public static readonly LocalisationToken Reject = new StandardButtonToken("Reject", Guid.Parse("f99c6a9c-6a55-4f55-ac4b-9581e56d18d3"));
    public static readonly LocalisationToken RequestMoreInfo = new StandardButtonToken("Request more info", Guid.Parse("19f3d76b-dafa-47ae-8416-b7d61546b03d"));
    public static readonly LocalisationToken Cancel = new StandardButtonToken("Cancel", Guid.Parse("75617287-5418-466b-9373-cc36f8298859"));
    public static readonly LocalisationToken Publish = new StandardButtonToken("Publish", Guid.Parse("efd87fd4-e7f1-4071-9d26-a622320c366b"));
    public static readonly LocalisationToken Remove = new StandardButtonToken("Remove", Guid.Parse("f7db5d81-5af8-42bf-990f-778df609948e"));
}

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

Поэтому, когда дело доходит до перевода, мы отправим эти токены переводчикам, и они изменят только текст. Затем это будет добавлено на сайт на соответствующем языке, и страница вызовет правильный перевод в зависимости от выбранного языка.

Проблема/Вопрос

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

Итак, вопрос. Способ, которым мы сейчас это делаем, вызовет проблемы с производительностью?

Если да, то может ли кто-нибудь предложить какие-либо лучшие решения?

Всего на нашем сайте 1000 таких токенов.

Google не очень помог мне в этом случае, поэтому любой совет будет очень признателен. Я изо всех сил старался сформулировать это так, чтобы оно имело смысл. Это не просто объяснить.

Заранее спасибо за любую помощь, которую люди могут предоставить.

7
задан Gaz Winter 12 July 2012 в 12:08
поделиться