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