JavaScript найти заменить - PullRequest
0 голосов
/ 06 июля 2011

У меня есть вопрос об оптимизации, но больше о браузере / клиенте.

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

Тем не менее, я играю идею позволить javascript выполнять поиск / замену выделенных текстов на каждой странице.

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

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

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

Для тех людей, которые любят получать подробности, вот что я хотел бы сделать с javascript.

Я бы загрузил файл languages.js со всеми подходящими словамипереводы на любой язык, который я реализую.Вместо выполнения огромного поиска / замены при каждой загрузке страницы, я бы локализовал поиск / замену для конкретной страницы или, возможно, сузил элемент, чтобы иметь атрибут, который мой сценарий загружал бы в DOM и выполнял поиск / заменутолько на этом.

Я открыт для лучших идей.

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

спасибо, ребята!

Ответы [ 2 ]

1 голос
/ 06 июля 2011

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

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

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

Вам также следует остерегаться «перепрошивки» нелокализованного языка.Было бы ужасно, если бы страница загрузилась, а затем через долю секунды язык изменился на что-то другое.Если вы выполняете обмен из события готовности DOM (например, $ (function () {}) в jquery), возможно, уже слишком поздно.Вы можете сделать это из сценария, который вы поместили внизу страницы, и это, вероятно, будет хорошо, но даже в этом случае это может зависеть от браузера и структуры разметки, не говоря уже о пропускной способности пользователя и о том,Сервер отправляет контент порциями.

Я думаю, что все сводится к тому, что лучше всего соответствует вашим потребностям.Извините, это не очень хороший ответ, но я думаю, что он точный:)

0 голосов
/ 06 июля 2011

Я согласен, важно, чтобы ваш сервер не перегружался. Я бы решил проблему одним из двух способов

  1. Используйте предложенную вами функцию поиска и замены javascript, в то время как javascript работает, разверните load.gif с сообщением о «переводе», чтобы объяснить пользователям, почему они должны ждать. Если вы переводите слово в слово, вы должны быть осторожны с браузером, таким как IE, или стонать о необходимости выполнить работу «Страница перестала отвечать»; Я бы предложил запустить setInterval (Translate (), 1), где translate переводит заданное количество слов за раз, чтобы браузер не думал, что ваш скрипт находится в бесконечном цикле.

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

Лично я бы реализовал 2, если это возможно, чтобы быть более дружественным к браузерам (например, мобильным устройствам), но на практике это подойдет, и это интересная проблема.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...