/
669.txt
100 lines (68 loc) · 5.08 KB
/
669.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
* 仕様書
[REFS[
- [5] [CITE@en-GB-x-hixie[HTML Standard]] ([TIME[2015-03-05 09:33:40 +09:00]] 版) <https://html.spec.whatwg.org/#disk-space-2>
]REFS]
* ストレージの種類
[1] [[Web]] には次の[[著者]]が一部または全部を制御できる[[ストレージ]]があります。
[FIG(short list)[
- [[Web Storage]]
-- [CODE(DOMa)@en[[[localStorage]]]]
-- [CODE(DOMa)@en[[[sessionStorage]]]]
-- [CODE(DOMa)@en[[[globalStorage]]]] (廃止)
- [[IndexedDB]]
- [[クッキーストア]]
- [[Cache API]]
- [[File System API]]
- [[Web SQL Database]] (廃止)
]FIG]
[23] [[セッション]]を超えて持続するもの、しないもの、
明示的な[[ストレージ]]としての性質が強いもの、[[キャッシュ]]としての性質が強いもの、
[[サイト]]ごとの設定に属するものなど色々あります。
[14] [[プラグイン]]や [[HTC]] が[[ストレージ]]を用意していることがあります。
[2] この他に [[HTTPキャッシュ]]や [[AppCache]] があります。
とりわけ[[クッキー]]や[[実体タグ]]は、永続性が強いものです。
[15] [CODE(DOMm)@en[[[pushState]]]] や [CODE(DOMm)@en[[[replaceState]]]]
も一時[[ストレージ]]として機能します。
;; [16] [[bfcache]] も同様に一時ストレージと言えなくもありません。しかし[[著者]]視点で[[ストレージ]]として利用するのは困難です。
[12] [[Blob URL Store]]、[[大域オブジェクト]]、[[JavaScript]] の[[呼び出しスタック]]なども、
広い意味で一時ストレージと言えるかもしれません。 [[expando]]
を考慮すると任意の [[JavaScript]] [[オブジェクト]]は、この意味の[[ストレージ]]です。
しかし、これらは極めて[[永続性]]に乏しいものです。
[17] [[証明書データベース]]もある意味ではストレージです。
[3] [[ストレージ]]の管理のための [[Web API]] として、 [[Quota Management API]]
や [[Storage Standard]] があります。
[22] [[キャッシュ]]は、古くから[[メモリーキャッシュ]]と[[ディスクキャッシュ]]の両方が実装されています。
[[Webブラウザー]]はアクセス頻度やディスクの空き容量などを考慮して両者を適宜使い分けています。
[HISTORY[
[18] 関係する[[仕様書]]上の概念として、[[ストレージミューテックス]]があります。
]HISTORY]
* サイズ制限
[6] [[利用者エージェント]]は、悪意ある[[著者]]が[[ディスク]]を無駄遣いすることを防ぐため、
[[Web Storage]] [[ストレージ]]領域上の利用できる最大量を制限する[['''べきです''']] [SRC[>>5]]。
[7] [[利用者エージェント]]は、 [CODE[example.com]] に対して [CODE[a.example.com]]
のように[[サブドメイン]]を使って上限を回避できないようにする[['''べきです''']] [SRC[>>5]]。
つまり[[サイト][eTLD+1]]単位を考慮した制限が必要です。
[11] 予測可能性を考慮し、[[圧縮]]していない状態でのサイズで制限する[['''べきです''']]
[SRC[>>5]]。
[10] [[HTML Standard]] は各[[起源]]に5[[MB]]を割り当てることを提案しつつ、実装者からのフィードバックを募っています [SRC[>>5]]。
[8] [[利用者エージェント]]は、 [[quota]] に達した時に[[利用者]]に対して、
当該[[サイト]]により多くの領域を認めるかどうか尋ねても構いません [SRC[>>5]]。
[9] [[利用者エージェント]]は、[[利用者]]が各[[ドメイン]]がどれだけの領域を使っているか見られるようにする[['''べきです''']] [SRC[>>5]]。
[4] [[クッキー]]に関しては、[[クッキーのサイズ制限]]も参照。
* プライバシー
[24] [[ストレージ]]は、その性質上、 [[fingerprinting vector]] です。
* 関連
[25] [[Webアプリケーション]]のための本項の[[ストレージ][ストレージ (Web)]]の他に、
[[Webブラウザー]]の実行される[[プラットフォーム]]の[[ファイルシステム][ファイルシステム (Web)]]にも限定的なアクセスが提供されています。
[13] [[HTTP]] の[[状態符号]] [CODE(HTTP)[[[507]]]] は、[[サーバー]]側のストレージの容量不足を表すものです、
本項でいう[[クライアント]]側の[[ストレージ]]とは異なります。
* 歴史
[19] [CITE@en[Make site storage origin-bound · whatwg/storage@cd1ea3a]]
([TIME[2016-04-01 19:36:21 +09:00]] 版)
<https://github.com/whatwg/storage/commit/cd1ea3a03409766e2d91333bddffc18f3f9b1cb5>
[20] [CITE@en[Mention application cache and notifications under site storage]]
([[annevk]]著, [TIME[2016-06-24 17:34:04 +09:00]])
<https://github.com/whatwg/storage/commit/dd5aa801bc6b3234d266e8e013b1f8e8aded17c9>
[21] [CITE@en[Explain the intent behind the persistent permission]]
([[annevk]]著, [TIME[2016-06-25 16:29:28 +09:00]])
<https://github.com/whatwg/storage/commit/e1f556d4c62b7cb619048f853f6dd45bcf11bfb2>