最近、いろいろ思うところあって、一から勉強し直し中。
その一環として、インターネットを支える技術について、お猿なりにまとめていく。
497 views
キャッシュとは、「サーバーから取得したリソースを、ローカルストレージに蓄積し、再利用する」仕組み。
ただし、有効な間のみ。無効になると、再取得する必要がある。
キャッシュしたデータに対して、キャッシュと呼ぶこともある。
取得したリソースが、キャッシュ可能かどうかを示す。
可能な場合、有効期限を示す
リソースのキャッシュ不可を示す。
Pragmaヘッダに指定できる値は、「no-cache」のみ。
HTTP1.1 200 OK
Content-Type:.....;charset=utf-8
Pragma:no-cache
キャッシュの有効期限(新鮮さをサーバが保つ)を示す。
クライアントが次回このリソースにアクセスするときは、キャッシュの有効期限かどうかによって、再取得かキャッシュ利用するかを変更する。
最長で「約1年後」の日時を入れることを推奨している。10年後とじゃは危ない
HTTP1.1 200 OK
Content-Type:.....;charset=utf-8
Expires:Thu,11 May 2021 18:00:00 GMT
~
キャッシュ可能なデータ
~
詳細なキャッシュの方法を指定する
//この二つは、同じ意味
Pragma:no-cache
Cache-Control:no-cache
//Cache-Controlは、秒で時間指定可能
Cache-Control:max-age:86400
Expires:Thu,11 May 2021 18:00:00 GMT
キャッシュの再利用が難しいと判断した場合、リソースの再取得を行う。
しかし「条件付きGET」を使用すれば、キャッシュを再利用できる可能性がある。
条件付きGETは、キャッシュから変更されているかを調べるヒントをリクエストヘッダに含めることで、キャッシュがそのまま使用可能か検証する。
リソースの更新日時を条件にする
(例)もし、指定した日時以降に変更されていたら
リソースのETagを条件にする
(例)指定した値にマッチしなければ
今までの方式(HTTP1.0)では、もっさりした動きになる。
これを解決するために存在する。
クライアントとサーバー間でリクエストのたびに切断するのではなく、まとめて接続し続ける。
これを、「Keep-Alive」ヘッダという。(現在はこちらがデフォルト)
持続的接続では、クライアントはレスポンスを待たずにサーバーにリクエストを送信できる。
これを、「パイプライン化」
ファイル名を指定する。
ファイル名のヒントを指定する
Page 11 of 18.
owl
駆け出しエンジニア
だいたいweb系をかじってる
最近ちょとブロックチェーンに興味出てきた