[31] [DFN[[[AppCache]]]] は、[[クライアント側Webアプリケーション]]の関連ファイル一式を
[[Webブラウザー]]に[[キャッシュ]]するための仕組みです。この機能は2007年に
[[HTML5]] に追加され、その後各 [[Webブラウザー]]で実装されました。

* 代替

[41] 現在では [[AppCache]] は[[非推奨]]とされ、 [[Service Workers]]
を使うのが望ましいと考えられています。

[63] 
かなり削除が進んできているようですね。
[TIME[2020-11-25T07:36:13.500Z]]

* 呼称

[25] 元々本機能全体を表す明確な用語はありませんでしたが、2011年頃から AppCache
と呼ばれるようになっています。

* 構成要素

[FIG(short list)[
- [[キャッシュマニフェスト]]
- [CODE(HTMLa)@en[[[manifest]]]] [[属性]]
- [CODE(DOMi)@en[[[ApplicationCache]]]]
- [[アプリケーションキャッシュ選択アルゴリズム]]
]FIG]

[37] [[AppCache]] の処理は [[navigate]]、[[fetch]]、[[構文解析器]]に組み込まれています。

* 歴史

[17] [CITE['''['''whatwg''']''' Offline Web Apps]] ([CODE[2007-09-08 07:21:56 +09:00]] 版) <http://www.mail-archive.com/whatwg@lists.whatwg.org/msg07556.html>

[18] [CITE[Latest proposal for offline web app API]] ([[Ian Hickson <ian@...>]] 著, [CODE[2007-09-21 10:36:07 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/11832>

[19] [CITE[Re: Google Gears and HTML5]] ([[Ian Hickson <ian@...>]] 著, [CODE[2007-10-09 07:03:00 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/11960>

[20] [CITE[HTML5: Offline Web Applications - Anne’s Weblog]] ([CODE[2007-10-07 02:38:50 +09:00]] 版) <http://annevankesteren.nl/2007/10/offline>

[50] [CITE@en-US[Offline Web Applications]] ([TIME[2008-06-07 01:42:50 +09:00]]) <https://www.w3.org/TR/2008/NOTE-offline-webapps-20080530/>

[21] [CITE[Caching offline Web applications]] ([[Ian Hickson <ian@...>]] 著, [TIME[2008-10-18 01:36:31 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/16043>

[16] [CITE[Re: Caching offline Web applications]] ([[Ian Hickson]] 著, [TIME[2008-11-18 04:05:08 +09:00]] 版) <http://permalink.gmane.org/gmane.org.w3c.whatwg.discuss/16623>

[22] [CITE[Bug 23165 - Add support for application cache dynamic entries]] ([TIME[2009-01-19 12:18:06 +09:00]] 版) <https://bugs.webkit.org/show_bug.cgi?id=23165>

[23] [CITE@en[Dynamic entries in the Application Cache removed]] ([[Ian Hickson]] 著, [TIME[2009-01-22 10:22:47 +09:00]] 版) <http://lists.w3.org/Archives/Public/public-html/2009Jan/0287.html>

[24] [CITE@en-us[Firefox 3.1 for developers - MDC]] ([TIME[2009-02-08 18:25:06 +09:00]] 版) <https://developer.mozilla.org/ja/Firefox_3.1_for_developers#.E6.96.B0.E3.81.97.E3.81.8F.E3.82.B5.E3.83.9D.E3.83.BC.E3.83.88.E3.81.95.E3.82.8C.E3.81.9F.E6.A9.9F.E8.83.BD_2>

>HTML5 Offline Specification のサポートが完了しました。

[1] [CITE['''['''whatwg''']''' Appcache feedback (various threads)]]
([TIME[2011-02-01 09:31:33 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-January/030136.html>

[2] [CITE@en[Web Applications 1.0 r5812  Change the suggested extension for appcache manifests from .manifest to .appcache to avoid clashing with Microsoft's unregistered application/manifest type]]
( ([TIME[2011-02-01 09:42:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=5811&to=5812>

[3] [CITE['''['''whatwg''']''' AppCache-related e-mails]]
([TIME[2011-06-17 09:50:54 +09:00]] 版)
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2011-June/031964.html>

[4] [CITE[''''''[''''''whatwg'''''']'''''' AppCache-related e-mails]]
( ([TIME[2011-08-04 23:37:37 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2011-August/032771.html>

[51] [CITE@en[Offline web applications workshop - W3C Wiki]] ([TIME[2017-04-19 12:51:24 +09:00]]) <https://www.w3.org/wiki/Offline_web_applications_workshop>

[52] [CITE@en-US[Fixing Application Cache Community Group]] ([TIME[2017-04-19 20:16:56 +09:00]]) <https://www.w3.org/community/fixing-appcache/>

[5] [CITE@en[Web Applications 1.0 r6920 Remove vestiges of MIME type checking in appcache.Fixing https://www.w3.org/Bugs/Public/show_bug.cgi?id=14701]]
( ([TIME[2012-01-26 08:27:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=6919&to=6920>

[6] [CITE[''''''[''''''whatwg'''''']'''''' Can we change the base URL of fallback entries in appcache manifests? and other feedback]]
( ([TIME[2012-05-08 08:27:59 +09:00]] 版))
<http://lists.whatwg.org/htdig.cgi/whatwg-whatwg.org/2012-May/035712.html>

[7] [CITE@en[Web Applications 1.0 r7136     Add a feature to appcache to make it possible to mark a cache as preferring online resources than cached resources.]]
( ([TIME[2012-06-15 07:48:00 +09:00]] 版))
<http://html5.org/tools/web-apps-tracker?from=7135&to=7136>

[8] [CITE[Bug 60493 – ApplicationCache - feature request for a way to override the fallback behavior]]
( ([TIME[2012-12-12 08:53:05 +09:00]] 版))
<https://bugs.webkit.org/show_bug.cgi?id=60493>

[10] [CITE[''''''[''''''whatwg'''''']'''''' The src-N proposal]]
( ([TIME[2013-11-08 20:17:35 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2013-November/041374.html>

[11] [CITE@en[Application Cache API ("AppCache") (Windows)]]
( ([TIME[2013-11-13 13:51:54 +09:00]] 版))
<http://msdn.microsoft.com/en-us/library/ie/hh673545(v=vs.85).aspx>

[12] [CITE@en[Bug 22702 – appcache: More detailed error information]]
( ([TIME[2014-02-14 13:09:51 +09:00]] 版))
<https://www.w3.org/Bugs/Public/show_bug.cgi?id=22702>

[13] [CITE[IRC logs: freenode / #whatwg / 20140213]]
( ([TIME[2014-02-14 20:43:39 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140213#l-467>

[14] [CITE@en[Re: ''''''[''''''whatwg'''''']'''''' AppCache Content-Type Security Considerations]]
( ([[Ian Hickson]] 著, [TIME[2014-05-13 08:17:31 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-whatwg-archive/2014May/0076.html>

[15] [CITE[IRC logs: freenode / #whatwg / 20140515]]
( ([TIME[2014-05-17 18:12:00 +09:00]] 版))
<http://krijnhoetmer.nl/irc-logs/whatwg/20140515#l-987>

[28] [CITE[''''''[''''''whatwg'''''']'''''' Fwd: fallback section taking over for 4xx and 5xx responses while online]]
( ([TIME[2012-12-11 01:01:52 +09:00]] 版))
<http://lists.whatwg.org/pipermail/whatwg-whatwg.org/2012-December/038292.html>

** ServiceWorker

[26] [[AppCache]] は広く実装されるに至りましたが、実用上の様々な問題から、
代替策が議論されるようになりました。

[REFS[
- [9] [CITE@en[Fixing appcache: a proposal to get us started]]
( ([[Jonas Sicking]] 著, [TIME[2013-03-26 16:02:58 +09:00]] 版))
<http://lists.w3.org/Archives/Public/public-webapps/2013JanMar/0977.html>
]REFS]

[27] 2013年以後 [[ServiceWorker]] の開発が進められ、 [[AppCache]]
にかわるものとして期待されています。 [[AppCache]] への新機能の追加は保留状態となっています。

[29] [CITE@en[Web Applications 1.0 r8739     Attempt to mitigate the injection elevation attack on appcache, and describe the attack in detail]]
( ([TIME[2014-09-04 06:39:00 +09:00]] 版))
<http://html5.org/r/8739>

[30] [CITE@en[Web Applications 1.0 r8791     Make appcache requests have no referrer, since it's not clear what referrer to use.]]
( ([TIME[2014-09-20 02:52:00 +09:00]] 版))
<https://html5.org/r/8791>

[32] [CITE@en[Web Applications 1.0 r8823 Mention cookie-bombing in the appcache section]]
( ([TIME[2014-09-27 08:44:00 +09:00]] 版))
<https://html5.org/r/8823>

* 濫用

[REFS[
- [33] [CITE[HTML5における no-cache - Qiita]] ([TIME[2014-10-06 08:48:29 +09:00]] 版) <http://qiita.com/hidekuro/items/dea83ebdf73e2f2277ae>
]REFS]

[34] >>33 は [CODE(HTTP)@en[[[Cache-Control:]] [[no-cache]]]] の意味に
[[AppCache]] を濫用する方法を提案しています。

* 関連

[35] [[AppCache]] は [[HTTPキャッシュ]]や [[bfcache]] のような
[[Webブラウザー]]の他の[[キャッシュ]]とは異なる仕組みで、
[[著者]]が[[キャッシュ]]の対象範囲を明示的に指定できるものとなっています。


[36] [CITE@en[Necko/Cache/Offline - MozillaWiki]]
([TIME[2015-03-21 17:30:25 +09:00]] 版)
<https://wiki.mozilla.org/Necko/Cache/Offline>

[FIG(quote)[
[FIGCAPTION[
[38] [CITE[IRC logs: freenode / #whatwg / 20150816]]
([TIME[2015-08-17 21:04:32 +09:00]] 版)
<http://krijnhoetmer.nl/irc-logs/whatwg/20150816>
]FIGCAPTION]

> 
> # '''['''17:37''']''' <annevk> jojo-: the plan is to remove the appcache section and remove support from browsers

]FIG]


[39] [CITE@en[Deprecate <keygen> and appcache · whatwg/html@1b43806]]
([TIME[2015-08-29 01:06:44 +09:00]] 版)
<https://github.com/whatwg/html/commit/1b438067d84da2ee95988842cdd8fe2655444936>

[40] [CITE@en[Integrate Fetch into HTML · whatwg/html@7c5555a]]
([TIME[2015-09-18 19:42:55 +09:00]] 版)
<https://github.com/whatwg/html/commit/7c5555a16f2920c02244c10756bb2f1a11e87a22>

[42] [CITE@en[Fixes #265: Change whitelist/blacklist to safelist/blocklist · whatwg/html@cb3316d]]
([TIME[2015-10-27 12:37:03 +09:00]] 版)
<https://github.com/whatwg/html/commit/cb3316db45e369ba31d97c5ee2dcd9c353a3cb5d>

[FIG(quote)[
[FIGCAPTION[
[43] [CITE@en[Safari 4.0]]
([TIME[2015-11-04 22:54:07 +09:00]] 版)
<https://developer.apple.com/library/safari/releasenotes/General/WhatsNewInSafari/Articles/Safari_4_0.html#//apple_ref/doc/uid/TP40014305-CH4-SW16>
]FIGCAPTION]

> WebKit now supports the HTML5 offline web applications standard, allowing a web application to dictate which resources it needs, causing WebKit to download them and serve them locally from disk, as well as serve updates to the web application atomically. The Safari 4 Developer Preview does not yet support dynamic or opportunistically cached entries.

]FIG]


[44] [CITE@ja[Application Cache API が廃止予定となりました | Firefox サイト互換性情報]]
([TIME[2015-11-05 06:12:09 +09:00]] 版)
<https://www.fxsitecompat.com/ja/docs/2015/application-cache-api-has-been-deprecated/>

[45] [CITE@en[Rewrite global object initialization to delegate to ES · whatwg/html@cf0355d]]
([TIME[2015-12-16 19:23:12 +09:00]] 版)
<https://github.com/whatwg/html/commit/cf0355d7e0e229b98f7fbd51b8c7608010c787f5>

[46] [CITE@en[URLs are parsed and produce records · whatwg/html@30bc255]]
([TIME[2016-02-14 23:06:33 +09:00]] 版)
<https://github.com/whatwg/html/commit/30bc2557105ad62881ec9670f253febbc9761b44>

[47] [CITE[API Deprecations and Removals in Chrome 50 | Web Updates - Google Developers]]
( ([TIME[2016-05-19 01:39:55 +09:00]]))
<https://developers.google.com/web/updates/2016/03/chrome-50-deprecations?utm_source=feed&utm_medium=feed&utm_campaign=updates_feed>

[48] [CITE@en[Remove appcache from shared workers]]
([[domenic]]著, [TIME[2017-02-23 09:46:48 +09:00]])
<https://github.com/whatwg/html/commit/3f1c84d682da30be5c323a43dfcc8995aae2f731>

[49] [CITE@en[Appcache.]]
([[mikewest]]著, [TIME[2017-03-24 20:33:58 +09:00]])
<https://github.com/w3c/webappsec-clear-site-data/commit/889a514a2e241451168b789e927cfdb8384fa5cd>

[53] [CITE@en[460327 - remove opportunistic caching]]
([TIME[2017-05-11 16:08:46 +09:00]])
<https://bugzilla.mozilla.org/show_bug.cgi?id=460327>

[54] [CITE@en[82066 - AppCache - feature request for a way to override the fallback behavior - chromium - Monorail]]
([TIME[2018-01-02 16:11:37 +09:00]])
<https://bugs.chromium.org/p/chromium/issues/detail?id=82066>

[55] [CITE@en[181778 – AppCache: Log a Deprecation warning to the Console when AppCache is used]]
([TIME[2018-01-18 14:56:23 +09:00]])
<https://bugs.webkit.org/show_bug.cgi?id=181778>

[56] [CITE@en[Deprecations and removals in Chrome 67  |  Web  |  Google Developers]]
([TIME[2018-05-02 23:51:04 +09:00]])
<https://developers.google.com/web/updates/2018/04/chrome-67-deps-rems>

[57] [CITE@en[Deprecations and removals in Chrome 69  |  Web  |  Google Developers]]
([TIME[2018-09-15 02:56:15 +09:00]])
<https://developers.google.com/web/updates/2018/09/chrome-70-deps-rems>

[58] [CITE@en[Restrict application caches to secure contexts]]
([[annevk]]著, [TIME[2018-11-10 06:46:16 +09:00]])
<https://github.com/whatwg/html/commit/81344cc9f567bfafaed57805fd9cdf9f4a4237bf>

[59] [CITE@en[Restrict AppCache to secure contexts · Issue #3440 · whatwg/html]]
([TIME[2019-03-13 11:02:21 +09:00]])
<https://github.com/whatwg/html/issues/3440>

[60] [CITE@en[Integrate Fetch and "AppCache" or remove "AppCache" · Issue #151 · whatwg/html]]
([TIME[2019-03-13 11:03:44 +09:00]])
<https://github.com/whatwg/html/issues/151>

[61] [CITE@en[Restrict application caches to secure contexts by annevk · Pull Request #4149 · whatwg/html]]
([TIME[2019-03-13 11:04:49 +09:00]])
<https://github.com/whatwg/html/pull/4149>

[62] [CITE[AppCache Removal Plan - Google グループ]]
([TIME[2020-08-08 11:33:05 +09:00]])
<https://groups.google.com/a/chromium.org/forum/#!msg/blink-api-owners-discuss/ivh_NDBpjEs/7uA8iDWgAAAJ>