mozilla

リビジョンの比較

Offline resources in Firefox

Change Revisions

リビジョン 233554:

リビジョン 233554 (編集者: Potappo / 編集日時: )

リビジョン 233555:

リビジョン 233555 (編集者: Kohei / 編集日時: )

タイトル:
Offline resources in Firefox
Offline resources in Firefox
URL スラグ:
Offline_resources_in_Firefox
Offline_resources_in_Firefox
タグ:
"Firefox 3", "Offline web applications"
"Firefox 3", "Offline web applications"
内容:

リビジョン 233554
リビジョン 233555
n8      {{ 翻訳中() }}n8      {{ Fx_minversion_header("3") }}
9    </p>
10    <h2>
11      {{ 英語版章題("Introduction") }}はじめに
12    </h2>
13    <p>9    </p>
14      HTML5 は Web ベースのアプリケーションをオフラインで実行できるようにするためのアプリケーションキャッシュメカ
>ニズムを提供します。開発者は、ブラウザがキャッシュし、オフライン状態のユーザが利用できるようにすべきリソースを指定するために Ap 
>plication Cache (AppCache) インターフェースを利用できます。キャッシュが行われたアプリケーションは、ユー 
>ザがオフラインになったときに更新ボタンを押した場合でも、正常に読み込まれ、正常に動作します。 
15    </p>10    <p>
11      Firefox 3 では、HTML 5 で定義されている、Web アプリケーションのリソースをオフラインにキャッシュす
 >る機構の大半が実装されています。これは、Web アプリケーションによって提供されるリソース定義ファイル (マニフェスト) から取得
 >された、「<strong>アプリケーションキャッシュ</strong>」と呼ばれるリソース群を使って実現されます。
16    <p>12    </p>
17      アプリケーションキャッシュを利用することは以下の利点をアプリケーションにもたらします:13    <h3 name=".E3.82.A2.E3.83.97.E3.83.AA.E3.82.B1.E3.83.BC.E3.82
 >.B7.E3.83.A7.E3.83.B3.E3.82.AD.E3.83.A3.E3.83.83.E3.82.B7.E3.83.A
 >5">
18    </p>14      アプリケーションキャッシュ
19    <ul>
20      <li>オフラインブラウジング: ユーザがオフライン状態であるときにもサイトを閲覧できます。
21      </li>
22      <li>速度: キャッシュされたリソースはローカルに置かれることになり、その結果、より速く読み込まれます。
23      </li>
24      <li>サーバ読み込みの削減: ブラウザはサーバから変更されたリソースのみをダウンロードします。
25      </li>
26    </ul>
27    <h2>
28      {{ 英語版章題("How the application cache works") }}アプリケーションキャッシュ
>はどのように動作するか 
29    </h2>
30    <h3>15    </h3>
31      {{ 英語版章題("Enabling the application cache") }}アプリケーションキャッシュを
>有効にする 
32    </h3>
33    <p>
34      アプリケーションのためにアプリケーションキャッシュを有効にするには、アプリケーションページ内の&nbsp; <code
>>html</code> 要素に <code>manifest</code> 属性を含めなければなりません。以下に例を示します: 
35    </p>16    <p>
17      {{ Note("Firefox は今のところ、アプリケーションキャッシュにおけるバージョン管理をサポートしていません
 >。") }}
18    </p>
19    <p>
20      複数の Web アプリケーションがリソースを共有できるため (そして同じマニフェスト URI も共有できるため)、各 
 >Web アプリケーションはそれぞれ固有のキャッシュを管理します。しかし、アプリケーションキャッシュは、それらが共有しているマニフェ
 >スト URI をもとにグループ化され、共通の「<strong>更新状況</strong>」が与えられます。更新状況は以下のいずれか
 >になります。
21    </p>
36    <div>22    <dl>
23      <dt>
24        <code>idle</code>
25      </dt>
26      <dd>
27        アプリケーションキャッシュは、更新をダウンロードするプロセスの途中ではありません。
28      </dd>
29      <dt>
30        <code>checking</code>
31      </dt>
32      <dd>
33        キャッシュは、その内容が最新かどうか、リソースマニフェストを参照して確認を行っています。
34      </dd>
35      <dt>
36        <code>downloading</code>
37      </dt>
38      <dd>
39        キャッシュは、変更されたリソースマニフェストにもとづいて、新しい内容に更新されている途中です。
40      </dd>
41    </dl>
42    <p>
43      {{ Fx_minversion_note("3") }}
44    </p>
45    <h4 name=".E3.83.AA.E3.82.BD.E3.83.BC.E3.82.B9">
46      リソース
47    </h4>
48    <p>
49      キャッシュには常に、URI によって特定されるリソースが、少なくともひとつは含まれます。リソースは以下のいずれかのカテ
 >ゴリに属します。
50    </p>
51    <dl>
52      <dt>
53        黙示的エントリー
54      </dt>
55      <dd>
56        これらは、次の理由により、キャッシュに追加されたリソースです。ユーザによって訪問される最上位のブラウジングコンテキ
 >ストには、そのリソースが <code>manifest</code> 属性を使ってキャッシュに含まれていることを示すドキュメントが
 >含まれるためです。
57      </dd>
58      <dt>
59        マニフェスト
60      </dt>
61      <dd>
62        これはリソースマニフェストそのものです。黙示的エントリーの <code>html</code> 要素の <code
 >>manifest</code> 属性で指定された URI から読み込まれます。マニフェストは、アプリケーションキャッシュの更新プ
 >ロセスの中でダウンロードされ、処理されます。黙示的エントリーは、マニフェストと同じスキーマ、ホスト、ポートで提供される必要がありま
 >す。
63      </dd>
64      <dt>
65        明示的エントリー
66      </dt>
67      <dd>
68        これらは、キャッシュのマニフェストに記載されたリソースです。
69      </dd>
70      <dt>
71        代替エントリー
72      </dt>
73      <dd>
74        これらは、代替 (フォールバック) エントリーとしてキャッシュのマニフェストに記載されたリソースです。<stron
 >g>Firefox ではまだサポートされていません。</strong>
75      </dd>
76      <dt>
77        便宜的にキャッシュされるエントリー
78      </dt>
79      <dd>
80        これらは、取得時にその URI が便宜的キャッシュの名前空間に一致し、その結果アプリケーションキャッシュに自動的に
 >キャッシュされたリソースです。<strong>Firefox ではまだサポートされていません。</strong>
81      </dd>
82      <dt>
83        動的エントリー
84      </dt>
85      <dd>
86        これらは、<code><a href="ja/NsIDOMOfflineResourceList#add.28.2
 >9">add()</a></code> メソッドを使って動的に追加されたリソースです。
87      </dd>
88    </dl>
89    <h4 name=".E3.82.AA.E3.83.B3.E3.83.A9.E3.82.A4.E3.83.B3.E3.83
 >.9B.E3.83.AF.E3.82.A4.E3.83.88.E3.83.AA.E3.82.B9.E3.83.88">
90      オンラインホワイトリスト
91    </h4>
92    <p>
93      オンラインホワイトリストには、Web アプリケーションがオフラインキャッシュではなくサーバから直接取得する必要のある、
 >ゼロまたはそれ以上のリソースの URI が含まれます。これは、認められたリソースのみにアクセスを制限するもので、ブラウザのセキュリ
 >ティモデルが、ユーザを潜在的なセキュリティ問題から守ることを可能にします。
94    </p>
95    <p>
96      {{ Note("オンラインホワイトリストは Firefox 3 では使われていません。ただし、Firefox の将来
 >のバージョンや、他のブラウザで実装されるオフラインリソースサポートとの互換性を保証するため、いずれにしても必要な場合は提供すべきで
 >す。") }}
97    </p>
98    <h3 name=".E3.82.AD.E3.83.A3.E3.83.83.E3.82.B7.E3.83.A5.E3.83
 >.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88">
99      キャッシュマニフェスト
100    </h3>
101    <p>
102      キャッシュマニフェストファイルは <code>text/cache-manifest</code> という MIME 
 >タイプで提供される必要があります。この MIME タイプを使って提供されるすべてのリソースは、ここで定義されている、アプリケーショ
 >ンキャッシュマニフェストのための構文に従う必要があります。キャッシュマニフェストは UTF-8 形式のテキストファイルで、任意で 
 >BOM 文字を含むこともできます。改行文字は、ラインフィード (U+000A)、キャリッジリターン (U+000D)、あるいはその
 >両方で表すことができます。
103    </p>
104    <p>
105      キャッシュマニフェストの 1 行目は、ゼロあるいはそれ以上のスペースまたはタブ文字に続けて「CACHE MANIFES
 >T」という文字列で構成される必要があります。2 つの単語の間にはひとつのスペース (U+0020) が含まれます。1 行目に書かれ
 >たそれ以外の文字列は無視されます。
106    </p>
107    <p>
108      キャッシュマニフェストのリマインダーは、ゼロあるいはそれ以上の、以下の行によって構成されます。
109    </p>
110    <dl>
111      <dt>
112        空白行
113      </dt>
114      <dd>
115        ゼロあるいはそれ以上のスペースまたはタブ文字から成る空白行を用いることができます。
116      </dd>
117      <dt>
118        コメント
119      </dt>
120      <dd>
121        コメントは、ひとつの「#」文字に続くゼロあるいはそれ以上のスペースまたはタブ文字と、それに続くゼロあるいはそれ以上
 >のコメント文字列によって構成されます。コメントは単独の行のみで用いることができ、他の行に付加することはできません。
122      </dd>
123      <dt>
124        セクションヘッダ
125      </dt>
126      <dd>
127        セクションヘッダは、キャッシュマニフェストのどのセクションが操作されるかを示すものです。3 種類のセクションヘッダ
 >を用いることができます。
128      </dd>
129    </dl>
130    <blockquote>
131      <table class="standard-table">
132        <tbody>
133          <tr>
134            <th>
135              セクションヘッダ
136            </th>
137            <th>
138              説明
139            </th>
140          </tr>
141          <tr>
142            <td>
143              <code>CACHE:</code>
144            </td>
145            <td>
146              明示的セクションに切り替えます。これは既定のセクションです。
147            </td>
148          </tr>
149          <tr>
150            <td>
151              <code>FALLBACK:</code>
152            </td>
153            <td>
154              代替セクションに切り替えます。
155              <p>
156                {{ Note("代替セクションは、Firefox ではまだサポートされておらず、無視されます。"
 >) }}
157              </p>
158            </td>
159          </tr>
160          <tr>
161            <td>
162              <code>NETWORK:</code>
163            </td>
164            <td>
165              オンラインホワイトリストセクションに切り替えます。
166              <p>
167                {{ Note("オンラインホワイトリストセクションは、Firefox ではまだサポートされておら
 >ず、無視されます。ただし、適切なオンラインホワイトリストを提供することを強く推奨します。") }}
168              </p>
169            </td>
170          </tr>
171        </tbody>
172      </table>
173    </blockquote>
174    <dl>
175      <dd>
176        セクションヘッダ行には空白を含めることも可能ですが、セクション名には必ずコロンを含める必要があります。
177      </dd>
178      <dt>
179        各セクションのデータ
180      </dt>
181      <dd>
182        データ行の形式はセクションとごとに異なります。明示的セクションでは、各行は、キャッシュのリソースを参照した正しい 
 >URI または IRI を含む必要があります。各行の URI または IRI の前後には空白を含めることも可能です。
183      </dd>
184    </dl>
185    <p>
186      キャッシュマニフェストは、それぞれのセクションを任意で行き来することができます (つまり、各セクションヘッダを複数回用
 >いることができます)。また、セクションを空白にしておくことも許容されています。
187    </p>
188    <p>
189      {{ Note("相対 URI は、マニフェストを参照するドキュメントの URI ではなく、キャッシュマニフェストの 
 >URI からの相対となります。") }}
190    </p>
191    <h4 name=".E3.82.AD.E3.83.A3.E3.83.83.E3.82.B7.E3.83.A5.E3.83
 >.9E.E3.83.8B.E3.83.95.E3.82.A7.E3.82.B9.E3.83.88.E3.81.AE.E4.BE.8
 >B">
192      キャッシュマニフェストの例
193    </h4>
194    <p>
195      これは、架空の Web サイト <span class="nowiki">foo.com</span> におけるシンプ
 >ルなキャッシュマニフェストです。
196    </p>
37      <pre class="eval">197    <pre class="eval">
198CACHE MANIFEST
199# v1
200# これはコメントです。
201<span class="nowiki">http://www.foo.com/index.html</span>
202<span class="nowiki">http://www.foo.com/header.png</span>
203<span class="nowiki">http://www.foo.com/blah/blah</span>
204</pre>
205    <p>
206      この例では、セクションヘッダがありません。つまり、すべてのデータ行が明示的セクションとして解釈されます。
207    </p>
208    <p>
209      「v1」というコメントは、もっともな理由があって書かれています。キャッシュはマニフェストが変更された時だけ更新されるた
 >め、リソースを変更した場合は (例えば、<code>header.png</code> を新しい画像に差し替えた場合)、ブラウザに
 >キャッシュの更新が必要なことを知らせるには、マニフェストファイルに変更を加える必要があります。マニフェストに何らかの変更を加えるこ
 >とでキャッシュを最新の状態にできますが、バージョン番号は変更を加える部分として適しているというわけです。
210    </p>
211    <p>
212      所定の Web サイトでオフラインアプリケーションキャッシュを使うよう Firefox に知らせるには、次のように、サ
 >イトの <code>html</code> 要素に <code>manifest</code> 属性を追加する必要があります。
213    </p>
214    <pre class="eval">
38<span class="nowiki">&lt;html manifest="example.appcache"&gt; </s215<span class="nowiki">&lt;html manifest="http://www.foo.com/cache-
>pan>>manifest"&gt;</span>
n42    </div>n219    <h3 name=".E6.9B.B4.E6.96.B0.E3.83.97.E3.83.AD.E3.82.BB.E3.82
 >.B9">
43    <p>220      更新プロセス
44      manifest 属性の値は <strong>キャッシュマニフェスト</strong> ファイルへの参照となっています
>。キャッシュマニフェストファイルは、ブラウザがそのアプリケーションのためにキャッシュすべきリソース(ファイル)を列挙したテキストフ 
>ァイルです。 
45    </p>
46    <p>
47      キャッシュされて欲しいアプリケーションのすべてのページに <code>manifest</code> 属性を含めるべき
>です。ブラウザは <code>manifest</code> 属性が含まれないページを、それらがマニフェストファイル自身で明示的に 
>列挙されていない限り、キャッシュしません。マニフェストファイルにキャッシュされて欲しいページのすべてを列挙する必要はありません。な 
>ぜなら、ブラウザは、ユーザが訪問し<code>た manifest</code> 属性を持つすべてのページを暗黙的にアプリケーショ 
>ンキャッシュに追加するからです。 
48    </p>
49    <p>
50      いくつかのブラウザ (例: Firefox) は、ユーザがアプリケーションキャッシュを利用するアプリケーションを読み込
>む初回時に通知バーを表示します。通知バーは以下のようなメッセージを表示します: 
51    </p>
52    <p style="margin-left: 40px;">
53      このサイト (<code>www.example.com</code>) はオフライン作業用データの保存を求めています
>。 [許可] [このサイトでは保存しない] [今回は保存しない] 
54    </p>
55    <p>
56      "オフライン(利用可能) アプリケーション" という表現は、ときに、ユーザがオフライン機能を利用することを許可したアプ
>リケーションを具体的に指すこともあります。 
57    </p>
58    <h3>221    </h3>
59      {{ 英語版章題("Loading documents") }}ドキュメントを読み込む
60    </h3>
61    <div>
62      <p>
63        アプリケーションキャッシュの利用はドキュメントを読み込む通常のプロセスを変更します:
64      </p>
65      <ul>
66        <li>アプリケーションキャッシュが存在する場合、ブラウザはドキュメントを読み込んで、それに関連付けられたリソース
>をネットワークにアクセスせずにキャッシュから直接取得します。これはドキュメントの読み込み時間をスピードアップさせます。 
67        </li>
68        <li>ブラウザはキャッシュマニフェストがサーバ上で更新されているかどうかをチェックします。
69        </li>
70        <li>キャッシュマニフェストが更新されていた場合、ブラウザはマニフェストの新しいバージョンとそのマニフェスト内に
>列挙されたリソースをダウンロードします。これはバックグランドで行われ、パフォーマンスに大きな影響を与えません。 
71        </li>
72      </ul>
73      <p>
74        ドキュメントを読み込み、アプリケーションキャッシュを更新するプロセスの詳細は以下のようになります:
75      </p>
76    </div>
n78      <li>ブラウザは <code>manifest</code> 属性を含むドキュメントを訪れたとき、アプリケーションキn223      <li>Firefox は、<code>manifest</code> 属性を含むドキュメントを訪れると、<code>
>ャッシュが存在しなければ、ドキュメントを読み込んでから、マニフェストファイルに列挙されたすべてのエントリーを取得して、アプリケーシ><a href="ja/DOM/window.applicationCache">window.applicationCache<
>ョンキャッシュの最初のバージョンを作成します。>/a></code> オブジェクトに対して <code>checking</code> イベントを送ります。そして、適切な HTT
 >P キャッシュ規則に従いマニフェストファイルを取得します。その時点でキャッシュされているマニフェストのコピーが最新であった場合、<
 >code>applicationCache</code> に <code>noupdate</code> イベントが送られ、更新プ
 >ロセスは完了します。
n80      <li>そのドキュメントへのその後の訪問では、ブラウザはドキュメントとマニフェストファイルで指定されたその他のリソースn225      <li>マニフェストファイルが、前回の更新チェック以降、変更されていなかった場合もまた、<code>applicati
>を(サーバからではなく)アプリケーションキャッシュから読み込みます。さらに、ブラウザは <code><a href="/en/DO>onCache</code> に <code>noupdate</code> イベントが送られ、更新プロセスは完了します。繰り返し
>M/window.applicationCache" title="en/DOM/window.applicationCache">になりますが、リソースを変更した際はマニフェストファイルにも変更を加える必要があるのはこのためです。そうすることで Firefox
>>window.applicationCache</a></code> オブジェクトに <code>checking</code>> はリソースを再度キャッシュする必要があると判断します。
> イベントを送り、適切な HTTP キャッシュ規則に従い、マニフェストファイルを取得します。 
n82      <li>マニフェストファイルの現在のキャッシュされたコピーが最新であった場合、ブラウザは <code>applicatn227      <li>マニフェストファイルが変更されていた場合は、マニフェストに書かれたすべてのファイルと、<code><a hre
>ionCache</code> オブジェクトに <code>noupdate</code> イベントを送り、更新プロセスは完了しま>f="ja/NsIDOMOfflineResourceList#add.28.29">applicationCache.add()
>す。サーバ上のキャッシュされたリソースを変更する場合、マニフェストファイル自身も変更する必要があることに注意してください。そうする></a></code> を呼び出すことでキャッシュに追加されたファイルが、適切な HTTP キャッシュ規則に従い一時キャッシュに取
>ことで、ブラウザはすべてのリソースを再び取得する必要があることを知ります。>得されます。各ファイルがキャッシュに取得されるたびに、<code>applicationCache</code> オブジェクトに 
 ><code>progress</code> イベントが送られます。エラーが発生した場合は、<code>error</code> イ
 >ベントが送られ、更新は中止されます。
n84      <li>マニフェストファイルが変更<em>されていた</em>場合、マニフェストに列挙されたファイルのすべて、および、n229      <li>すべてのファイルの取得に成功すると、それらは実際のオフラインキャッシュへ一度に移動され、<code>appli
><code><a href="/en/nsIDOMOfflineResourceList#add.28.29" title="en>cationCache</code> オブジェクトに <code>cached</code> イベントが送られます。
>/nsIDOMOfflineResourceList#add.28.29">applicationCache.add()</a>< 
>/code> が呼ばれたことによってキャッシュに追加されたファイルが、適切な HTTP キャッシュ規則に従い、一時キャッシュに取得 
>されます。この一時キャッシュに取得された各ファイル毎に、ブラウザは <code>applicationCache</code> オ 
>ブジェクトに <code>progress</code> イベントを送ります。エラーが起こった場合、ブラウザは <code>err 
>or</code> イベントを送り、更新は中止されます。 
85      </li>
86      <li>すべてのファイルが正常に取得されれば、それらは本当のオフラインキャッシュに動的に移動され、<code>appl
>icationCache</code> オブジェクトに <code>cached</code> イベントを送ります。ドキュメントは 
>既にキャッシュからブラウザに読み込まれているので、更新されたドキュメントはドキュメントが(手動かプログラムで)再読込されるまで描画 
>されません。 
n89    <h2>n232    <h3 name="Firefox_.E3.81.A7.E6.9C.AA.E5.AE.9F.E8.A3.85.E3.81.
 >AE.E6.A9.9F.E8.83.BD">
90      {{ 英語版章題("Storage location and clearing the offline cache "233      Firefox で未実装の機能
>) }}ストレージの場所とオフラインキャッシュをクリアする 
91    </h2>
92    <p>
93      Chrome では、設定の "閲覧履歴データの消去..." を選択することか、<a class="external" 
>href="chrome://appcache-internals/" title="chrome://appcache-inte 
>rnals/">chrome://appcache-internals/</a> を開くことで、オフラインキャッシュをクリアできま 
>す。Safari では、設定に、似たような "キャッシュを空にする" がありますが、ブラウザの再起動も必要になるかもしれません。 
94    </p>
95    <p>
96      Firefox では、オフラインキャッシュデータは Firefox プロファイルに分割して保存されています。以下が通常
>のディスクキャッシュです: 
97    </p>
98    <ul>
99      <li>Windows Vista/7: <code>C:\Users\&lt;username&gt;\AppDat
>a\<strong>Local</strong>\Mozilla\Firefox\Profiles\&lt;salt&gt;.&l 
>t;profile name&gt;\OfflineCache</code> 
100      </li>
101      <li>Mac/Linux:&nbsp;<code>/Users/&lt;username&gt;/Library/C
>aches/Firefox/Profiles/&lt;salt&gt;.&lt;profile name&gt;/OfflineC 
>ache</code> 
102      </li>
103    </ul>
104    <p>
105      Firefox では、現在のステータスを <code>about:cache</code> ページ ("Offline
> cache device" の見出しがある箇所)で調査できます。オフラインキャッシュは ツール -&gt; オプション -&gt 
>; 詳細 -&gt; ネットワーク -&gt; オフラインデータ の "削除..." ボタンを利用して各サイト毎に別々にクリアでき 
>ます。 
106    </p>
107    <p>
108      Firefox 11 以前から Firefox 11 まで、ツール -&gt; 最近の履歴を消去、あるいは、ツール -
>&gt; オプション -&gt; 詳細 -&gt; ネットワーク -&gt; オフラインデータ -&gt; 今すぐ消去 のどちらで 
>もオフラインキャッシュを消せませんでしたが、このバグは修正されました。 
109    </p>
110    <p>
111      <a href="/ja/DOM/Storage#Storage_location_and_clearing_the_
>data" title="ja/DOM/Storage#Storage_location_and_clearing_the_dat 
>a">DOM&nbsp;Storage データをクリアする</a>も参照してください。 
112    </p>
113    <div>
114      <p>
115        アプリケーションキャッシュはもう利用されない状態にもなり得ます。アプリケーションマニフェストファイルがサーバーから
>削除されたとき、ブラウザはそのマニフェストを利用しているアプリケーションキャッシュをすべて削除し、<code>applicatio 
>nCache</code> オブジェクトに "obsoleted" イベントを送信します。これはアプリケーションキャッシュの状態を 
> <code>OBSOLETE <code>に設定します。</code></code> 
116      </p>
117    </div>
118    <h2>
119      {{ 英語版章題("The cache manifest file") }}キャッシュマニフェストファイル
120    </h2>
121    <h3>234    </h3>
122      {{ 英語版章題("Referencing a cache manifest file") }}キャッシュマニフェスト
>ファイルを参照する 
123    </h3>
124    <p>
125      Web アプリケーションでの <code>manifest</code> 属性はキャッシュマニフェストファイルからの相
>対パスか絶対 URL のどちらかを指定できます。(絶対 URL はアプリケーションと同一生成元経由でなければなりません)。キャッシ 
>ュマニフェストファイルはどんなファイル拡張子でもかまいませんが、<code>text/cache-manifest</code>  
>MIME タイプで提供されなければなりません。 
126    </p>235    <p>
236      Firefox 3 の機能フリーズ日が近づく中、HTML 5 仕様書の草案はまだ流動的であることから、オフラインキャッ
 >シュ機能の一部はまだ実装されていません。
237    </p>
238    <ol>
239      <li>WHATWG の仕様書草案では、ブラウザがオンラインの場合でも、利用可能な場合は、すべてのリクエストをオフライ
 >ンキャッシュに対して行うよう指示されています。Firefox は今のところ、オフラインの場合のみオフラインキャッシュにアクセスしま
 >す。このため、オンラインホワイトリストはまだサポートされていません。
240      </li>
241      <li>Firefox は今のところ、各 Web アプリケーションのキャッシュを個別に管理していません。アプリケーショ
 >ンは、リソースのバージョン不一致について心配がない限り、異なるマニフェスト間でリソースを共有することは避けるべきです。しかし、アプ
 >リケーションは一般的に、アプリケーションごとに各リソースのコピーを管理すべきです。
242      </li>
243      <li>Firefox はまだ、便宜的キャッシュや代替エントリーをサポートしていません。
244      </li>
245    </ol>
246    <h3 name=".E5.8F.82.E8.80.83.E8.B3.87.E6.96.99">
247      参考資料
127    <h3>248    </h3>
128      {{ 英語版章題("Entries in a cache manifest file") }}キャッシュマニフェストフ
>ァイルのエントリー 
129    </h3>
130    <p>
131      キャッシュマニフェストファイルはブラウザがオフラインアクセスのためにキャッシュすべきリソースを列挙した単純なテキストフ
>ァイルです。リソースは URI によって区別されます。キャッシュマニフェストに列挙されたエントリーはマニフェストと同じスキーマ、ホ 
>スト、およびポートでなければなりません。 
132    </p>
133    <h3>
134      {{ 英語版章題("Example 1: a simple cache manifest file") }}例 1: 
>単純なキャッシュマニフェストファイル 
135    </h3>
136    <p>
137      以下は、<span class="nowiki">www.example.com</span> にある想像上の Web
> サイトのための単純なキャッシュマニフェストファイルである <code>example.appcache です。</code> 
138    </p>
139    <pre class="eval">
140CACHE MANIFEST
141# v1 - 2011-08-13
142# これはコメントです。
143<span class="nowiki">http://www.example.com/index.html</span>
144<span class="nowiki">http://www.example.com/header.png</span>
145<span class="nowiki">http://www.example.com/blah/blah</span>
146</pre>
147    <p>
148      キャッシュマニフェストファイルは 3 つのセクション(後述する <code>CACHE</code>、<code>NE
>TWORK</code>、<code><code>および</code></code> FALLBACK)を含んでいます。上記の例で 
>は、セクションヘッダーがありません。そのため、すべてのデータ行は明示的 (<code>CACHE</code>)セクションであると 
>みなされます。これは、ブラウザは列挙されたリソースのすべてをアプリケーションキャッシュにキャッシュすべきということを意味します。リ 
>ソースは絶対、もしくは、相対 URL (例:<code>index.html</code>)のどちらかを用いて指定できます。 
149    </p>
150    <p>
151      上記例での "v1" コメントがあるのには正当な理由があります。ブラウザがアプリケーションキャッシュを更新するのは、マ
>ニフェストファイルがバイト単位で更新されたときだからです。キャッシュされたリソースを変更したとき(例えば、<code>header 
>.png</code> 画像を新しい画像に差し替えた場合)、ブラウザにキャッシュの更新が必要であることを知らせるためにマニフェスト 
>ファイルの内容も変更する必要があります。どんな変更でもマニフェストファイルに対して行うことができますが、バージョン番号を修正するこ 
>とが、おすすめできるベストプラクティスです。 
152    </p>
153    <div class="warning">
154      <strong>重要:</strong> マニフェストファイル自身をキャッシュマニフェストファイルに指定しないようにし
>てください。さもなければ、ブラウザは新しいマニフェストが利用可能であることを知ることがほぼ不可能になるでしょう。 
155    </div>
156    <h3>
157      {{ 英語版章題("Sections in a cache manifest file: CACHE, NETWORK
>, and FALLBACK") }}キャッシュマニフェストファイルにおけるセクション:&nbsp;<code>CACHE</co 
>de>,&nbsp;<code>NETWORK</code>, and&nbsp;<code>FALLBACK</code> 
158    </h3>
159    <p>
160      マニフェストには 3 つの性質が異なるセクションがあります:&nbsp;<code>CACHE</code>、<cod
>e>NETWORK</code>、および <code>FALLBACK</code> です。 
161    </p>
162    <dl>
163      <dt>
164        <code>CACHE:</code>
165      </dt>
166      <dd>
167        これはキャッシュマニフェストファイルにおけるエントリーの既定のセクションです。<code>CACHE:</code
>> セクションヘッダー下(もしくは <code>CACHE MANIFEST</code> の行の直後)に列挙されたファイルは、そ 
>れらが初回時にダウンロードされた後に明示的にキャッシュされます。 
168      </dd>
169      <dt>
170        <code>NETWORK:</code>
171      </dt>
172      <dd>
173        <code>キャッシュマニフェストファイルにおける NETWORK</code> セクションヘッダー下に列挙された
>ファイルは、サーバーに接続する必要があるホワイトリスト化されたリソースです。ユーザがオフライン状態であっても、これらのリソースへの 
>リクエストはすべてキャッシュを無視します。ワイルドカードが利用できます。 
174      </dd>
175      <dt>
176        <code>FALLBACK:</code>
177      </dt>
178      <dd>
179        <code>FALLBACK:</code> セクションは、リソースにアクセス不可能な場合にブラウザが利用すべき代
>替ページを指定します。このセクションにおける各エントリーには 2 つの URI を列挙します。具体的には、最初はリソースであり、2 
> 番目は代替リソースです。両方の URL は相対で、マニフェストファイルと同一生成元経由でなければなりません。ワイルドカードが利用 
>できます。 
180      </dd>
181    </dl>
182    <p>
183      <code>CACHE</code>,&nbsp;<code>NETWORK</code>, and&nbsp;<co
>de>FALLBACK <code>セクションはキャッシュマニフェストファイル</code>内で<code>どんな順番でも列挙</ 
>code>でき<code>、各セク</code>ションは単一のマニフェストにおいて<code><code><code>、</cod 
>e>複数回<code><code><code>定義することができます。</code></code></code></code></ 
>code></code> 
184    </p>
185    <h3>
186      {{ 英語版章題("Example 2: a more complete cache manifest file") 
>}}例 2: より完全なキャッシュマニフェストファイル 
187    </h3>
188    <p>
189      以下は、 <span class="nowiki">www.example.com</span> にある想像上の We
>b サイト向けのより完全なキャッシュマニフェストファイルです: 
190    </p>
191    <pre class="eval">
192CACHE MANIFEST
193# v1 2011-08-14
194# これは別のコメントです
195index.html
196cache.html
197style.css
198image1.png
199 
200# 利用可能ならネットワーク経由で利用する
201NETWORK:
202network.html
203 
204# 代替コンテンツ
205FALLBACK:
206/ fallback.html
207</pre>
208    <p>
209      この例は <code>NETWORK</code> <code>と</code> FALLBACK セクションを用いて
>、<code>network.html</code> ページは常にネットワーク経由で取得し、<code>allback.html< 
>/code> ページは代替リソース (例えば、サーバへの接続ができない場合) として提供されるべきであることを指定しています。 
210    </p>
211    <h3>
212      Structure of a cache manifest file
213    </h3>
214    <p>
215      Cache manifest files must be served with the&nbsp;<code>tex
>t/cache-manifest</code>&nbsp;MIME type. All resources served usin 
>g this MIME type must follow the syntax for an application cache  
>manifest, as defined in this section. 
216    </p>
217    <p>
218      Cache manifests are UTF-8 format text files, and may option
>ally include a BOM character. Newlines may be represented by line 
> feed (<code>U+000A</code>), carriage return (<code>U+000D</code> 
>), or carriage return and line feed both. 
219    </p>
220    <p>
221      The first line of the cache manifest must consist of the st
>ring&nbsp;<code>CACHE MANIFEST</code>&nbsp;(with a single&nbsp;<c 
>ode>U+0020</code>&nbsp;space between the two words), followed by  
>zero or more space or tab characters. Any other text on the line  
>is ignored. 
222    </p>
223    <p>
224      The remainder of the cache manifest must be comprised of ze
>ro or more of the following lines: 
225    </p>
226    <dl>
227      <dt>
228        Blank line
229      </dt>
230      <dd>
231        You may use blank lines comprised of zero or more space a
>nd tab characters. 
232      </dd>
233      <dt>
234        Comment
235      </dt>
236      <dd>
237        Comments consist of zero or more tabs or spaces followed 
>by a single&nbsp;<code>#</code>&nbsp;character, followed by zero  
>or more characters of comment text. Comments may only be used on  
>their own lines, and cannot be appended to other lines. This mean 
>s that you cannot specify fragment identifiers. 
238      </dd>
239      <dt>
240        Section header
241      </dt>
242      <dd>
243        Section headers specify which section of the cache manife
>st is being manipulated. There are three possible section headers 
>: 
244      </dd>
245    </dl>
246    <blockquote>
247      <table class="standard-table">
248        <tbody>
249          <tr>
250            <th>
251              Section header
252            </th>
253            <th>
254              Description
255            </th>
256          </tr>
257          <tr>
258            <td>
259              <code>CACHE:</code>
260            </td>
261            <td>
262              Switches to the explicit section of the cache manif
>est (this is the default section). 
263            </td>
264          </tr>
265          <tr>
266            <td>
267              <code>NETWORK:</code>
268            </td>
269            <td>
270              Switches to the online whitelist section of the cac
>he manifest. 
271            </td>
272          </tr>
273          <tr>
274            <td>
275              <code>FALLBACK:</code>
276            </td>
277            <td>
278              Switches to the fallback section of the cache manif
>est. 
279            </td>
280          </tr>
281        </tbody>
282      </table>
283    </blockquote>
284    <dl>
285      <dd>
286        The section header line may include whitespaces, but must
> include the colon (<code>:</code>) in the section name. 
287      </dd>
288      <dt>
289        Section data
290      </dt>
291      <dd>
292        The format for lines of data varies from section to secti
>on. In the explicit (<code>CACHE:</code>) section, each line is a 
> valid URI or IRI reference to a resource to cache (no wildcard c 
>haracters are allowed in this sections). Whitespace is allowed be 
>fore and after the URI or IRI on each line. In the Fallback secti 
>on each line is a valid URI or IRI reference to a resource, follo 
>wed by a fallback resource that is to be served up when a connect 
>ion with the server cannot be made. In the network section, each  
>line is a a valid URI or IRI reference to a resource to fetch fro 
>m the network (the wildcard character * is allowed in this sectio 
>n).<br> 
293        <div class="note">
294          <strong>Note:&nbsp;</strong>Relative URIs are relative 
>to the cache manifest's URI, not to the URI of the document refer 
>encing the manifest. 
295        </div>
296      </dd>
297    </dl>
298    <p>
299      Cache manifest files can switch from section to section at 
>will (each section header can be used more than once), and sectio 
>ns are allowed to be empty. 
300    </p>
301    <h2>
302      Resources in an application cache
303    </h2>
304    <p>
305      An application cache always includes at least one resource,
> identified by URI. All resources fit into one of the following c 
>ategories: 
306    </p>
307    <dl>
308      <dt>
309        Master entries
310      </dt>
311      <dd>
312        These are resources added to the cache because a browsing
> context visited by the user included a document that indicated t 
>hat it was in this cache using its&nbsp;<code>manifest</code>&nbs 
>p;attribute. 
313      </dd>
314      <dt>
315        Explicit entries
316      </dt>
317      <dd>
318        These are resources explicitly listed in the application'
>s cache manifest file. 
319      </dd>
320      <dt>
321        Network entries
322      </dt>
323      <dd>
324        These are resources listed in the application's cache man
>ifest files as network entries. 
325      </dd>
326      <dt>
327        Fallback entries
328      </dt>
329      <dd>
330        These are resources listed in the application's cache man
>ifest files as fallback entries. 
331      </dd>
332    </dl>
333    <div class="note">
334      <strong>Note:</strong>&nbsp;Resources can be tagged with mu
>ltiple categories, and can therefore be categorized as multiple e 
>ntries.&nbsp; For example, an entry can be both an explicit entry 
> and a fallback entry. 
335    </div>
336    <p>
337      Resource categories are described in greater detail below.
338    </p>
339    <h3>
340      Master entries
341    </h3>
342    <p>
343      Master entries are any HTML&nbsp;files that include a {{ ht
>mlattrxref("manifest","html") }} attribute in their {{ HTMLElemen 
>t("html") }} element.&nbsp; For example, let's say we have the HT 
>ML&nbsp;file&nbsp;<code><a class="linkification-ext external" hre 
>f="http://www.foo.bar/entry.html" title="Linkification: http://ww 
>w.foo.bar/entry.html">http://www.example.com/entry.html</a></code 
>>, which looks like this: 
344    </p>
345    <pre>
346&lt;html manifest="example.appcache"&gt;
347  &lt;h1&gt;Application Cache Example&lt;/h1&gt;
348&lt;/html&gt;
349</pre>
350    <p>
351      If&nbsp;<code>entry.html</code>&nbsp;is not listed in the&n
>bsp;<code>example.appcache</code>&nbsp;cache manifest file, visit 
>ing the&nbsp;<code>entry.html</code>&nbsp;page causes&nbsp;<code> 
>entry.html</code>&nbsp;to be added to the application cache as a  
>master entry. 
352    </p>
353    <h3>
354      Explicit entries
355    </h3>
356    <p>
357      Explicit entries are resources that are explicitly listed i
>n the <code>CACHE</code> section of a cache manifest file. 
358    </p>
359    <h3>
360      Network entries
361    </h3>
362    <p>
363      The&nbsp;<code>NETWORK</code>&nbsp;section of a cache manif
>est file specifies resources for which a web application requires 
> online access. Network entries in an application cache are essen 
>tially an "online whitelist"—URIs specified in the&nbsp;<code>NET 
>WORK</code>&nbsp;section are loaded from the server instead of th 
>e cache. This lets the browser's security model protect the user  
>from potential security breaches by limiting access to approved r 
>esources. 
364    </p>
365    <p>
366      As an example, you can use network entries to load and exec
>ute scripts and other code from the server instead of the cache: 
367    </p>
368    <pre>
369CACHE MANIFEST
370NETWORK:
371/api
372</pre>
373    <p>
374      The cache manifest section listed above ensures that reques
>ts to load resources contained in the&nbsp;<code><a class=" exter 
>nal" href="http://www.example.com/api/" rel="freelink">http://www 
>.example.com/api/</a></code>&nbsp;subtree always go to the networ 
>k without attempting to access the cache. 
375    </p>
376    <div class="note">
377      <strong>Note</strong>:&nbsp;Simply omitting master entries 
>(files that have the&nbsp;<code>manifest</code>&nbsp;attribute se 
>t in the&nbsp;<code>html</code>&nbsp;element) from the manifest f 
>ile would not have the same result, because master entries will b 
>e added—and subsequently served from—the application cache.&nbsp; 
378    </div>
379    <h3>
380      Fallback entries
381    </h3>
382    <p>
383      Fallback entries are used when an attempt to load a resourc
>e fails.&nbsp; For example, let's say the cache manifest file&nbs 
>p;<code><a class=" external" href="http://www.example.com/example 
>.appcache" rel="freelink">http://www.example.com/example.appcache 
></a></code>&nbsp;includes the following content: 
384    </p>
385    <pre>
386CACHE MANIFEST
387FALLBACK:
388example/bar/ example.html
389</pre>
390    <p>
391      Any request to&nbsp;<code><a class=" external" href="http:/
>/www.example.com/example/bar/" rel="freelink">http://www.example. 
>com/example/bar/</a></code>&nbsp;or any of its subdirectories and 
> their content cause the browser to issue a network request to at 
>tempt to load the requested resource.&nbsp; If the attempt fails, 
> due to either a network failure or a server error of some kind,  
>the browser loads the file&nbsp;<code>example.html</code>&nbsp;in 
>stead. 
392    </p>
393    <h2>
394      Cache states
395    </h2>
396    <p>
397      Each application cache has a&nbsp;<strong>state</strong>, w
>hich indicates the current condition of the cache.&nbsp; Caches t 
>hat share the same manifest URI share the same cache state, which 
> can be one of the following: 
398    </p>
399    <dl>
400      <dt>
401        <code>UNCACHED</code>
402      </dt>
403      <dd>
404        A special value that indicates that an application cache 
>object is not fully initialized. 
405      </dd>
406      <dt>
407        <code>IDLE</code>
408      </dt>
409      <dd>
410        The application cache is not currently in the process of 
>being updated. 
411      </dd>
412      <dt>
413        <code>CHECKING</code>
414      </dt>
415      <dd>
416        The manifest is being fetched and checked for updates.
417      </dd>
418      <dt>
419        <code>DOWNLOADING</code>
420      </dt>
421      <dd>
422        Resources are being downloaded to be added to the cache, 
>due to a changed resource manifest. 
423      </dd>
424      <dt>
425        <code>UPDATEREADY</code>
426      </dt>
427      <dd>
428        There is a new version of the application cache available
>.&nbsp; There is a corresponding&nbsp;<code>updateready</code>&nb 
>sp;event, which is fired instead of the&nbsp;<code>cached</code>& 
>nbsp;event when a new update has been downloaded but not yet acti 
>vated using the&nbsp;<code>swapCache()</code>&nbsp;method. 
429      </dd>
430      <dt>
431        <code>OBSOLETE</code>
432      </dt>
433      <dd>
434        The application cache group is now obsolete.
435      </dd>
436    </dl>
437    <h2>
438      Testing for updates to the cache manifest
439    </h2>
440    <p>
441      You can programmatically test to see if an application has 
>an updated cache manifest file, using JavaScript. Since a cache m 
>anifest file may have been updated before a script attaches event 
> listeners to test for updates, scripts should always test&nbsp;< 
>code>window.applicationCache.status</code>. 
442    </p>
443    <pre class="deki-transform">
444function onUpdateReady() {
445  alert('found new version!');
446}
447window.applicationCache.addEventListener('updateready', onUpdateR
>eady); 
448if(window.applicationCache.status === window.applicationCache.UPD
>ATEREADY) { 
449  onUpdateReady();
450}
451</pre>
452    <p>
453      &nbsp;To manually start testing for a new manifest file, yo
>u can use&nbsp;<code>window.applicationCache.update()</code>. 
454    </p>
455    <h2>
456      Gotchas
457    </h2>
458    <ul>
459      <li>Never access cached files by using traditional GET para
>meters (like <code>other-cached-page.html?parameterName=value</co 
>de>). This will make the browser bypass the cache and attempt to  
>get it from network. To link to cached resources that have parame 
>ters parsed in JavaScript use parameters in the hash part of the  
>link, such as <code>other-cached-page.html#whatever?parameterName 
>=value</code>. 
460      </li>
461      <li>When applications are cached, simply updating the resou
>rces (files) that are used in a web page is not enough to update  
>the files that have been cached. You must update the cache manife 
>st file itself before the browser retrieves and uses the updated  
>files. You can do this programmatically using&nbsp;<code>window.a 
>pplicationCache.swapCache()</code>, though resources that have al 
>ready been loaded will not be affected. To make sure that resourc 
>es are loaded from a new version of the application cache, refres 
>hing the page is ideal. 
462      </li>
463      <li>It's a good idea to set expires headers on your web ser
>ver for&nbsp;<code>*.appcache</code>&nbsp;files to expire immedia 
>tely. This avoids the risk of caching manifest files. For example 
>, in Apache you can specify such a configuration as follows:<br> 
464        <code>ExpiresByType text/cache-manifest "access plus 0 se
>conds"</code> 
465      </li>
466    </ul>
467    <h2>
468      Browser Compatibility
469    </h2>
470    <p>
471      {{ CompatibilityTable() }}
472    </p>
473    <div id="compat-desktop">
474      <table class="compat-table">
475        <tbody>
476          <tr>
477            <th>
478              Feature
479            </th>
480            <th>
481              Chrome
482            </th>
483            <th>
484              Firefox (Gecko)
485            </th>
486            <th>
487              Internet Explorer
488            </th>
489            <th>
490              Opera
491            </th>
492            <th>
493              Safari
494            </th>
495          </tr>
496          <tr>
497            <td>
498              Basic support
499            </td>
500            <td>
501              4.0
502            </td>
503            <td>
504              3.5
505            </td>
506            <td>
507              10.0
508            </td>
509            <td>
510              10.6
511            </td>
512            <td>
513              4.0
514            </td>
515          </tr>
516        </tbody>
517      </table>
518    </div>
519    <div id="compat-mobile">
520      <table class="compat-table">
521        <tbody>
522          <tr>
523            <th>
524              Feature
525            </th>
526            <th>
527              Android
528            </th>
529            <th>
530              Firefox Mobile (Gecko)
531            </th>
532            <th>
533              IE Mobile
534            </th>
535            <th>
536              Opera Mobile
537            </th>
538            <th>
539              Safari Mobile
540            </th>
541          </tr>
542          <tr>
543            <td>
544              Basic support
545            </td>
546            <td>
547              2.1
548            </td>
549            <td>
550              {{ CompatUnknown() }}
551            </td>
552            <td>
553              {{ CompatNo() }}
554            </td>
555            <td>
556              11.0
557            </td>
558            <td>
559              3.2
560            </td>
561          </tr>
562        </tbody>
563      </table>
564    </div>
565    <p>
566      Note: Versions of Firefox prior to 3.5 ignore the&nbsp;<cod
>e>NETWORK&nbsp;</code>and&nbsp;<code>FALLBACK&nbsp;</code>section 
>s of the cache manifest file. 
567    </p>
568    <h2>
569      See also
570    </h2>
n573        <a class="external" href="http://www.html5rocks.com/en/tun251        <a class="external" href="http://www.w3.org/TR/2008/WD-ht
>torials/appcache/beginner/" title="http://www.html5rocks.com/en/t>ml5-20080122/#appcache">HTML 5 working draft: Application caches<
>utorials/appcache/beginner/">HTML5Rocks - A Beginner's Guide to U>/a>
>sing the Application Cache</a> 
252      </li>
253      <li>{{ Interface("nsIDOMOfflineResourceList") }}
n576        <a class="external" href="http://appcachefacts.info/" titn256        <a class="external" href="http://www.ibm.com/developerwor
>le="http://appcachefacts.info/">appcachefacts.info</a>&nbsp;- det>ks/jp/web/library/wa-ffox3/">Firefox 3.0 に備える - 人気のブラウザーの多くの新機能、特
>ailed information on AppCache idiosyncrasies>にオフラインのアプリケーション機能に関する、Web 開発者へのガイド</a> (IBM developerWorks)
577      </li>
578      <li>
579        <a class="external" href="http://hacks.mozilla.org/2010/0
>1/offline-web-applications/" title="http://hacks.mozilla.org/2010 
>/01/offline-web-applications/">offline web applications</a>&nbsp; 
>at hacks.mozilla.org - showcases an offline app demo and explains 
> how it works. 
580      </li>
581      <li>
582        <a class="external" href="http://www.whatwg.org/specs/web
>-apps/current-work/multipage/offline.html#offline" title="http:// 
>www.whatwg.org/specs/web-apps/current-work/multipage/offline.html 
>#offline">HTML 5 working draft: Offline web applications</a> 
583      </li>
584      <li>
585        <a class="external" href="http://developer.teradata.com/b
>log/js186040/2011/11/html5-cache-manifest-an-off-label-usage" tit 
>le="http://developer.teradata.com/blog/js186040/2011/11/html5-cac 
>he-manifest-an-off-label-usage">HTML5 Cache Manifest: An Off-labe 
>l Usage</a> 
586      </li>
587      <li>{{ interface("nsIApplicationCache") }}
588      </li>
589      <li>{{ interface("nsIApplicationCacheNamespace") }}
590      </li>
591      <li>{{ interface("nsIApplicationCacheContainer") }}
592      </li>
593      <li>{{ interface("nsIApplicationCacheChannel") }}
594      </li>
595      <li>{{ interface("nsIApplicationCacheService") }}
596      </li>
597      <li>{{ interface("nsIDOMOfflineResourceList") }}
598      </li>
599      <li>
600        <a class="external" href="http://www.ibm.com/developerwor
>ks/web/library/wa-ffox3/">Get ready for Firefox 3.0 - A Web devel 
>oper's guide to the many new features in this popular browser, es 
>pecially the offline application features</a>&nbsp;(IBM developer 
>Works) 
t604      {{ HTML5ArticleTOC() }}t260      <br>
605    </p>
606    <p>261    </p>
262    <p>
263      <br>
264    </p>
265    <p>
266      <br>
607      {{ languages( { "en": "en/Offline_resources_in_Firefox", "e267    </p>{{ languages( { "en": "en/Offline_resources_in_Firefox", 
>s": "es/Recursos_en_modo_desconectado_en_Firefox", "fr": "fr/Ress>"es": "es/Recursos_en_modo_desconectado_en_Firefox", "fr": "fr/Re
>ources_hors_ligne_dans_Firefox", "pl": "pl/Zasoby_offline_w_Firef>ssources_hors_ligne_dans_Firefox", "pl": "pl/Zasoby_offline_w_Fir
>oksie", "zh-tw": "zh_tw/Offline_resources_on_Firefox" } ) }}>efoksie", "zh-tw": "zh_tw/Offline_resources_on_Firefox" } ) }}
608    </p>

前に戻る