【问题标题】:How to serve offline application cache manifests for internationalized websites?如何为国际化网站提供离线应用程序缓存清单?
【发布时间】:2011-12-07 04:17:23
【问题描述】:

我有一个网站,其中 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。

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

【问题讨论】:

    标签: html internationalization locale manifest application-cache


    【解决方案1】:

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

    即用户登陆英语页面,然后选择西班牙语 会(重新?)下载在 西班牙舱单。

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

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

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

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

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

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

    据我所知,您无法使用 JavaScript 下载不同的清单文件,只能下载与您当前通过 manifest 属性访问的页面相关联的清单文件。 p>

    【讨论】:

    • 感谢您的回答。我最终为每种语言创建了单独的清单文件,清单名称反映了语言环境(es.manifest、en.manifest 等)。我正在使用 Django 和模板继承来管理清单文件并在清单之间共享公共内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-18
    • 2010-09-10
    • 2019-06-13
    • 1970-01-01
    • 2011-08-02
    • 2011-08-09
    相关资源
    最近更新 更多