我有一个网站,其中的URL包含区域设置信息,客户端的标题Accept-Language(或每页上的选择框)选择语言并重定向到当前页面的本地化URL。默认的英文网址是:
网站页面的http://example.com/
区域设置特定版本包含区域设置值:
http://example.com/de/
或http://example.com/es/
等。
我想了解如何在这种情况下处理指定脱机应用程序缓存清单的建议。我希望根据用户的URL缓存本地化版本的脱机页面。即,登陆英文页面然后选择西班牙语的用户将(重新)下载西班牙语清单中指定的西班牙语URL。
我是否应该针对每个区域设置的根页面命名清单文件(例如en.manifest,es.manifest)?或者,如果我在每个语言环境的根URL上使用相同的命名清单,那么如果用户更改为具有不同语言环境的页面(以及可能不同大小的清单文件),则会重新读取该文件 - Web服务器将指定不缓存清单文件(S))?或者,如果用户更改区域设置,我是否必须通过JavaScript显式加载特定于语言环境的清单?
我担心访问者会开始下载默认英语清单中指定的URL,然后选择他们的首选语言环境,而不是触发读取新的语言环境特定清单而不加载所选语言环境清单的URL。
我已经做了一些搜索,但没有遇到任何关于这种情况的讨论。
答案 0 :(得分:1)
我不确定这已经存在了足够长的时间,以便达成广泛认可的最佳做法,但我会尝试回答你的问题。
即。用户登陆英文页面然后选择西班牙语 会(重新)下载中指定的西班牙语网址 西班牙语清单。
我相信,但目前无法确认,如果你在en.manifest和es.manifest中都列出了文件,那么浏览器中只会保留该文件的一个副本。因此,请在每个清单中包含所有共享文件,这样您就不必担心人们首先访问主页以获取下载的两个清单。只要所有静态内容都有远期未来的标题,浏览器就应该使用本地缓存中的内容填充appcache,而不是再次获取它们。
我是否应该以不同的方式为每个根页面命名清单文件 locale(例如en.manifest,es.manifest)?
如果有很多不同的语言,那么每个访问者都可以下载每个特定语言的文件。因此,在这种情况下,您可能希望为每种语言提供单独的清单,以便对每个用户下载的内容进行更细致的控制。
或者,如果我在每个语言环境的根URL上使用相同的命名清单 如果用户更改为具有不同页面的页面,是否会重新读取 locale(以及可能不同大小的清单文件 - Web服务器 会指定不缓存清单文件)?
每当更新清单时,都会重新阅读清单。这将导致整个缓存被丢弃并重新下载。没有解决这个问题,最好的办法是不经常更新清单文件。
或者我必须通过显式加载特定于语言环境的清单 用户是否更改了区域设置的JavaScript?
据我所知,您无法使用JavaScript下载不同的清单文件,只能使用manifest
属性与您当前所在页面关联的文件。