如何在網路作業期間使用資料快取 (HTML)
[ 本文的目標對象是撰寫 Windows 執行階段 App 的 Windows 8.x 和 Windows Phone 8.x 開發人員。如果您正在開發適用於 Windows 10 的 App,請參閱 最新文件 ]
本主題說明如何使用資料快取搭配 Windows 執行階段應用程式中的網路作業。
以應用程式資料的形式快取網路內容
將內容儲存到磁碟可在應用程式意外終止或使用之網路有限的情況下,讓應用程式快速且流暢的採取動作。例如,RSS 摘要讀取程式可立即顯示從上一個工作階段快取到磁碟的摘要。有最新的摘要可用時,應用程式可以更新其內容。這可確保使用者在啟動時等待新的內容更新期間立即有內容可以閱讀。
Windows 8.1 在 Windows.Storage 命名空間提供 ApplicationData 類別。這個類別提供應用程式資料存放區的存取權。應用程式資料是特定應用程式特有的可變動資料。它包含執行階段狀態、使用者喜好設定及其他設定。應用程式執行時會建立、讀取、更新以及刪除應用程式資料。如需詳細資訊,請參閱使用 Windows 執行階段存取應用程式資料。
應用程式透過網路作業傳輸的檔案可以快取做為 Roaming、Local 或 Temporary 資料夾中的應用程式資料。
注意 Windows Phone 8.1 也包含一個特殊的 Cache 資料夾,供應用程式儲存或移除的檔案使用。
資料夾 | 說明 |
---|---|
本機 | 檔案會保留在原先撰寫的電腦上,而且不會與其他裝置同步。 |
暫存 | 檔案未使用時會被刪除。 系統判斷何時或是否刪除暫存檔案時所考慮的因素包含可用的磁碟容量和檔案使用期限。 |
漫遊 | 檔案在使用者利用已連線的帳戶登入的裝置間進行同步。檔案漫遊並非立即的;系統決定何時傳送資料時會衡量多項因素。 使用漫遊資料應低於配額 (由 RoamingStorageQuota 屬性定義),否則資料漫遊會暫停。應用程式正在寫入檔案時無法漫遊檔案,因此當不再需要應用程式的檔案物件時務必關閉。 |
下方的程式碼片段示範快取伺服器回應,從網路作業以 .txt 檔案的形式快取,做為 Roaming 資料夾的應用程式資料。然後,程式碼會示範如何使用關聯的檔案名稱抓取快取的內容。
範例
首先,我們定義 Roaming 資料夾的參考。 接下來,我們的 cacheResponse 範例在 Roaming 資料夾內建立新的檔案,並指出所有使用相同名稱的現有檔案都應被取代。檔案建立好後,內容會從原先從伺服器回應傳回的檔案寫入新的 serverResponse.txt 檔案。
var roamingFolder = Windows.Storage.ApplicationData.current.roamingFolder;
var filename = "serverResponse.txt";
function cacheResponse(strResponse) {
roamingFolder.createFileAsync(filename, Windows.Storage.CreationCollisionOption.replaceExisting)
.done(function (file) {
return Windows.Storage.FileIO.writeTextAsync(file, strResponse);
});
}
若要之後存取快取的 serverResponse.txt 檔案,我們的 getCachedResponse 範例會依名稱抓取檔案 (由 filename 定義),然後顯示內含的文字。
function getCachedResponse() {
roamingFolder.getFileAsync(filename)
.then(function (file) {
return Windows.Storage.FileIO.readTextAsync(file);
}).done(function (response) {
print(response);
}, function () {
// getFileAsync or readTextAsync failed.
// No cached response
});
}
快取伺服器回應中做為應用程式資料的內容可以在應用程式終止和重新啟動後快速存取和顯示內容。如需將設定寫入應用程式資料存放區以及如何回應漫遊事件的詳細資訊,請參閱管理應用程式資料或下載應用程式資料範例。