Как обслуживать манифесты офлайн-приложений для интернационализированных сайтов? - PullRequest
0 голосов
/ 07 декабря 2011

У меня есть веб-сайт, где URL-адреса содержат информацию о локали, а заголовок клиента Accept-Language (или поле выбора на каждой странице) выбирает язык и перенаправляет на локализованный URL-адрес для текущей страницы. Английский URL по умолчанию: http://example.com/ версии локали на страницах сайта содержат значение локали: http://example.com/de/ или http://example.com/es/ и т. Д.

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

Должен ли я по-разному называть файл манифеста для корневой страницы для каждой локали (например, en.manifest, es.manifest)? Или, если я использую один и тот же именованный манифест в корневом URL-адресе для каждой локали, он будет перечитан, если пользователь перейдет на страницу с другой локалью (и, вероятно, файлом манифеста другого размера - веб-сервер будет указывать не кэшировать файл манифеста). (ы))? Или я должен явно загружать манифест для конкретной локали через JavaScript, если пользователь меняет локали?

Я обеспокоен тем, что посетитель может начать загрузку URL-адресов, указанных в манифесте по умолчанию на английском языке, а затем выбрать предпочитаемую локаль и не запускать чтение нового манифеста, специфичного для локали, и не загружать URL-адреса для манифеста выбранной локали. *

Я провел некоторые поиски, но не сталкивался с обсуждением этой ситуации.

1 Ответ

1 голос
/ 08 декабря 2011

Я не уверен, что это было достаточно долго для того, чтобы была широко согласованная лучшая практика, но я попытаюсь ответить на ваши вопросы.

т.е. пользователь приземляется на английскую страницу и затем выбирает испанский будет (пере?) загружать URL-адреса на испанском языке, указанные в Испанский манифест.

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

Должен ли я по-разному называть файл манифеста для корневой страницы для каждого локаль (например, en.manifest, es.manifest)?

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

Или если я использую одноименный манифест в корневом URL для каждой локали будет ли он перечитан, если пользователь перейдет на страницу с другим локаль (и, вероятно, файл манифеста другого размера - веб-сервер будет указывать не кэширование файла (-ов) манифеста?

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

Или я должен явно загружать манифест, специфичный для локали, через JavaScript, если пользователь меняет локали?

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

...