0

我有一個網站,其中的網址包含語言環境信息,客戶端的標題Accept-Language(或每個網頁上的選擇框)選擇語言並重定向到當前頁面的本地化URL。默認的英文網址是: http://example.com/區域設置的站點頁面的特定版本包含的區域值: http://example.com/de/http://example.com/es/如何爲國際化網站提供離線應用程序緩存清單?

我想就如何處理指定的離線應用程序緩存在這種情況下表現的意見。我希望根據用戶的網址對本地化版本的離線頁面進行緩存。即用戶登陸英文頁面,然後選擇西班牙語將(重新)下載西班牙語清單中指定的西班牙語網址。

我應該爲每個語言環境的根頁面命名清單文件(例如en.manifest,es.manifest)嗎?或者,如果我在每個語言環境的根URL上使用相同的命名清單,則如果用戶更改爲具有不同語言環境的頁面(以及可能不同大小的清單文件 - Web服務器將指定不緩存清單文件(S))?或者,如果用戶更改語言環境,我是否必須通過JavaScript顯式加載特定於語言環境的清單?

我擔心訪問者會開始下載默認英文清單中指定的URL,然後選擇他們的首選語言環境,而不是觸發讀取新的語言環境特定清單,也不會加載所選語言環境清單的URL。

我已經做了一些搜索,但沒有遇到這種情況的任何討論。

回答

1

我不確定這是否已經存在足夠長的時間以便有廣泛同意的最佳做法,但我會嘗試回答您的問題。

即英文網頁上的用戶登陸,然後選擇西班牙語 會(重?)下載的 西班牙清單中指定的西班牙語網址。

我相信,但目前還不能證實,如果你在en.manifest和es.manifest中都列出了文件,那麼只有該文件的一個副本將被保留在瀏覽器中。因此,請在每個清單中包含所有共享文件,這樣您就不必擔心人們首先打開主頁,以便下載兩個清單。只要你所有的靜態內容都有過期的頭文件,瀏覽器就應該用本地緩存中的東西填充appcache,而不是再次抓取它們。

我應該爲每個 區域設置的根頁面命名清單文件(例如en.manifest,es.manifest)嗎?

如果有很多不同的語言,沒有意義讓每個訪問者下載每個語言特定的文件。因此,在這種情況下,您希望每種語言都有獨立的清單,以便對每個用戶下載的內容進行更細緻的控制。

或者,如果我用命名的根網址爲每個區域設置 清單將它重新讀取相同的,如果用不同的 區域(和可能不同大小的清單文件中的用戶更改爲頁 - webserver 會指定不緩存清單文件)?

清單在更新時將被重新讀取。這將導致整個緩存被丟棄並重新下載。沒有辦法避免這種情況,最好的辦法是不要經常更新清單文件。

或者,如果用戶更改區域設置,還是必須通過 JavaScript明確加載區域設置特定的清單嗎?

據我所知,你不能下載使用JavaScript 不同清單文件,只與你目前由manifest屬性頁關聯的一個。

+0

感謝您的回答。我最終爲每種語言創建了單獨的清單文件,其中清單的名稱反映了區域設置(es.manifest,en.manifest等)。我使用Django和模板繼承來管理清單文件並在清單中共享公共內容。 – saschwarz