0

我有一个网站,其中 URL 包含区域设置信息,客户端的标头 Accept-Language(或每个页面上的选择框)选择语言并重定向到当前页面的本地化 URL。默认的英文 URL 是: http://example.com/站点页面的区域设置特定版本包含区域设置值: http://example.com/de/http://example.com/es/等。

我想就如何在这种情况下处理指定离线应用程序缓存清单提出建议。我希望根据用户的 URL 缓存离线页面的本地化版本。即用户登陆英语页面然后选择西班牙语将(重新?)下载西班牙语清单中指定的西班牙语 URL。

我应该为每个语言环境(例如 en.manifest、es.manifest)的根页面以不同的方式命名清单文件吗?或者,如果我在每个语言环境的根 URL 上使用相同命名的清单,如果用户更改为具有不同语言环境的页面(以及可能不同大小的清单文件 - 网络服务器将指定不缓存清单文件),它将被重新读取(s))? 或者,如果用户更改语言环境,我是否必须通过 JavaScript 显式加载特定于语言环境的清单?

我担心访问者会开始下载默认英语清单中指定的 URL,然后选择他们的首选语言环境,而不是触发读取新的语言环境特定清单,也不会为所选语言环境的清单加载 URL。

我已经进行了一些搜索,但没有遇到任何关于这种情况的讨论。

4

1 回答 1

1

我不确定这是否已经存在足够长的时间来获得广泛认可的最佳实践,但我会尝试回答您的问题。

即用户登陆英语页面然后选择西班牙语将(重新?)下载西班牙语清单中指定的西班牙语 URL。

我相信,但目前无法确认,如果您在(比如说)en.manifest 和 es.manifest 中都列出了文件,那么浏览器中只会保留该文件的一个副本。因此,在每个清单中包含所有共享文件,这样您就不必担心人们首先点击主页才能下载两个清单。只要您的所有静态内容都具有远期过期标头,浏览器就应该使用其本地缓存中的内容填充应用缓存,而不是再次获取它们。

我应该为每个语言环境(例如 en.manifest、es.manifest)的根页面以不同的方式命名清单文件吗?

如果有很多不同的语言,那么让每个访问者都下载每个语言特定的文件是没有意义的。因此,在这种情况下,您可能希望每种语言都有单独的清单,以便对每个用户下载的内容进行更细粒度的控制。

或者,如果我在每个语言环境的根 URL 上使用相同命名的清单,如果用户更改为具有不同语言环境的页面(以及可能不同大小的清单文件 - 网络服务器将指定不缓存清单文件),它将被重新读取(s))?

每当更新清单时,都会重新读取清单。这将导致整个缓存被丢弃并重新下载。没有办法解决这个问题,最好的方法是不要经常更新清单文件。

或者,如果用户更改语言环境,我是否必须通过 JavaScript 显式加载特定于语言环境的清单?

据我所知,您无法使用 JavaScript 下载其他清单文件,只能下载与您当前所在页面相关联的清单文件manifest

于 2011-12-08T01:16:58.197 回答