TOPに戻る
  • Skip to primary navigation
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer
キャッシュ屋ブログ|レッドボックス

REDBOX Labo

CDN・WEB高速化ブログ

  • お問い合わせ
  • 運営会社
Home > CDN > 第4回 CDNの仕組み HTTPヘッダとは

第4回 CDNの仕組み HTTPヘッダとは

6/22 CDN

  • TwiiterTwiiter
  • FacebookFacebook
  • はてなブックマークはてなブックマーク
  • PocketPocket
HTTPヘッダーとは?

今回はCDNを利用する上で避けては通れない、HTTPヘッダの重要性についてご紹介します。

一般的なCDNはオリジンサーバー側のHTTPヘッダをみてキャッシュ時間を決める等、様々な判定を行う為CDNを利用する上でHTTPヘッダとオトモダチになっておくことは大変重要です。

HTTPヘッダって?

WEBサイトを表示する時、http:// もしくはhttps:// から始まっていますが、「http」とは通信プロトコルの一つでWebサーバーとクライアント(ブラウザなど)が、相互に通信するためのお約束ごとです。

Aさんがhttp://www.google.co.jpにアクセスすると、GoogleさんのWEBサーバーがコンテンツを返却し、AさんのブラウザにGoogleのサイトが表示されます。

「このコンテンツみたいです(リクエスト)」 → 「はい。どうぞ!(レスポンス)」

というやりとりがHTTPという決まり事に従ってやりとりされているわけです。その中でどういった情報をリクエストして、どのようなコンテンツを返すのかを定義する文字列がHTTPヘッダです。
HTTPヘッダにはリクエストヘッダとレスポンスヘッダの2種類が存在します。

HTTPヘッダの種類(リクエストヘッダ)

HTTPリクエストヘッダは「コンテンツがみたい!」「WEBみたい!」 という情報をサーバーに送る為の情報です。そのため、HTTPリクエストヘッダを作成するのはアクセス元のブラウザやアプリ本体ということになります。
WEBサーバーは、受け取ったHTTPリクエストヘッダの内容からどんな情報をブラウザやアプリに返すかを判断します。

アクセス元が生成するわけですから当然、ChromeやIE,Firefox、Safariなどブラウザによって若干生成する値は異なりますが基本的なリクエストヘッダは以下の3つのパートがあります。

HTTPリクエスト行

HTTPリクエスト行には、「メソッド」 「URL」 「HTTPバージョン」の3つの情報が含まれています。

メソッド

GETやPOSTなどの情報をメソッドといいます。WEBを閲覧する時は、ほぼGETリクエストですのでインターネット上の多くはGETリクエストが飛び交っていることになります。しかし、WEBフォームから問い合わせを行う場合はPOSTが利用されますし、WEBAPIを呼び出す場合もPOSTが使われる場合があります。

URL

WEBサイトのURLやパスが入ります。

HTTPバージョン

こちらは初めにご案内したHTTPプロトコルのバージョンです。現在主流はHTTP1.1ですが今後次世代プロトコルHTTP2.0という物に置き換わってくるであろうと言われています。
HTTP2.0ではHTTP1.1より効率が良い通信が出来るように、HTTPヘッダや通信の仕組みそのものが見直されているのですが今回は割愛させて頂きます。

データ本体

ブラウザから何かしらデータをサーバーに送る際、そのデータの内容がこちらに格納されます。
すなわちGETなどのメソッドでは空の状態となります。

HTTPリクエストヘッダ

ようやくHTTPヘッダのお話です。HTTPヘッダは主に以下のような情報が入ります。

フィールド名 内容
Authorizationユーザ認証用データ。サーバからのWWW-Authenticateヘッダに応える
From要求送信元のメールアドレス
If-Modified-Sinceここに指定された日付以降に更新された情報のみを要求
Referer現在のページを取得するときにユーザが使った
リンクを含むページのURL
User-Agentブラウザのタイプ、ブラウザ固有のコンテンツを返すときに有用
Acceptそのブラウザが欲しいMIMEのタイプ
Accept-Charsetそのブラウザが期待する文字セット
Accept-Encodingそのブラウザがデコードできるデータのエンコーディング。
大きなファイルのダウンロードに有効
Accept-Languageそのブラウザが予期している言語。
サーバが多国語に対応しているときなどに使う
HostもとのURLにリストされているホストとポート
If-Match指定した ETag にマッチする場合にのみ、メソッドを実行することを
サーバに依頼します。
If-None-Match指定した ETag にマッチしない場合にのみ、メソッドを実行することを
サーバに依頼します。
If-Range情報が更新されていないときはRangeで指定した範囲の情報を、
そうでなければ全体を要求
If-Unmodified-Since指定された日時以降更新されていなかったときに応答を返す
Max-ForwardsTRACEメソッドとともに使う。経由するポートの最大数指定
Proxy-AuthorizationProxy-Authenticateに対応して、プロキシにユーザ認証情報を通知
Rangeデータの一部を要求する

HTTPリクエストヘッダだけでも結構種類がありますね。

HTTPヘッダの種類(レスポンスヘッダ)

レスポンスヘッダとは、ブラウザやアプリから送られてきたリクエストヘッダをサーバー側が受信した後、サーバー側でレスポンスヘッダを作成しブラウザやアプリに送ります。送られてきたレスポンスヘッダをクライアントが受信して、初めてWEBコンテンツを表示することが出来ます。

レスポンスヘッダには「レスポンス状態コード」「HTTPヘッダ」「データ本体」の3つのパートがあります。

レスポンス状態コード

こちらは、リクエストに対する返答の状態を番号で表した物が入ります。「状態コード」(「HTTPステータスコード」で一般的なのは404 NotFound などでしょうか。 こちらはコンテンツがサーバーにありませんというHTTPステータスコードです。

HTTPステータスコードはHTTPヘッダと同様に複数にグループに分かれ、非常に多くのコードがあります。

ステータスコードは大まかに分けて5つです。

  • 100番台 : 処理中
  • 200番台 : 成功
  • 300番台 : リダイレクト
  • 400番台 : クライアントエラー
  • 500番台 : サーバエラー

100番台

100番台はクライアントからのリクエストを処理中であることを示すステータスとなります。
Webサーバー側からクライアント側(ブラウザなど)に対して少しレスポンスに時間がかかることや、詳細な情報をリクエストしてほしい等のレスポンスを返している際に利用します。100番台のステータスコードはあまり利用されることはありません。

200番台

200番台はクライアントからのリクエストが受付に成功したというステータスです。つまりサーバー側ではエラーもなくコンテンツをクライアントに返すことが出来る状態というコードです。多くのCDNでは200番台のステータスコードは普通にファイルをキャッシュします。

300番台

300番台は簡単にいうと「リダイレクト」ですが、実際はブラウザ側で追加の処理を実行する必要があるということを通知する時のステータスコードです。CDN側では200番台と同様キャッシュして配信します。

400番台・500番台

400番台 500番台のステータスコードはエラーコードです。サーバー側でリクエストされたものが返せない状態のときに使用されます。400番台はクライアント側に原因があるエラーとなり、一方500番台はWebサーバ側が原因のエラーです。

CDNではこのようなエラーコードはネガティブレスポンスといい、デフォルトで数分間キャッシュする場合があります。ネガティブレスポンスをキャッシュするメリットとしては大量の不要なエラーアクセスをオリジンサーバー側に到達させないという目的があり、弊社のCDNもデフォルトで最大5分間ネガティブレスポンスをキャッシュします。

このように、弊社のCDNではステータスコードによってなるべくオリジンサーバーにリクエストを行わないよう、CDNキャッシュサーバー側で出来る処理は全力で行っています。

HTTPレスポンスヘッダ

ようやく、HTTPヘッダのお話です。

HTTPヘッダはデータ本体の前に送られてくる、各種の状態を示す情報が入れられている部分です。HTTPレスポンスヘッダは以下のような種類があります

フィールド名内容
Serverウェブサーバの名前とバージョン情報。
Date現在の日付(グリニッジ標準時)
Last-Modifiedリソースの更新日
Content-Length出力のバイト単位の長さ
バイナリデータも含みます。
Content-Type出力のMIMEタイプ
Expiresリソースの有効期限
この日付以降は無効です。キャッシュは破棄されます。
Locationリダイレクト URL 情報
Location で指定されたリソースが送信されます。
単独ヘッダとして出力されます。
Pragmaリソースのキャッシングを有効/無効にする
「Pragma: no-cache」と指定すると、リソースのキャッシュを無効にします。
Statusリクエストのステータス
単独ヘッダとして出力されます。
WWW-Authenticate認証データ。
認証に必要なユーザー名やパスワードなどの情報が含まれます。
Refresh指定されたドキュメントを再ロードする。
Set-Cookieデータをクライアント側に保存する。
Etagサーバー固有の情報が付与され、ブラウザキャッシュを再利用するかどうか判断させます。

リクエストヘッダと同じくそこそこ種類がありますね。

データ本体

データ本体にはHTMLや画像、動画などの実際表示するコンテンツ自身が入ってます。
ブラウザは、データ本体の前に先ほどの「レスポンス状態コード」と「HTTPヘッダ」を受け取っていますが、画面には表示しないため意識することは出来ないです。

まとめ

今回はCDNを運用していく上で重要となるHTTPヘッダのお話をしていみました。CDNではHTTPヘッダ部分もキャッシュするため、ユーザーエージェントやその他情報が毎回異なるだけで、別のキャッシュと認識してしまいます。
そうなると、毎回オリジンサーバーにコンテンツを取りに行ってしまいキャッシュヒット率が低下しCDNを利用している意味が無くなってしまいますね。

そのため、オリジンサーバー側では不要なヘッダは出力せず、本当に付与しなければいけないヘッダのみに限定することがCDNを利用する上でまず初めにできるチューニングです。

コンテンツ配信に特化したプロフェッショナルチーム

レッドボックスでは、決まった枠にとらわれないCDNサービス・高速化サービスを提供しており、トライアルの段階からお客様のご要望をお伺いし最適なカスタマイズを行っています。 そのため他社では出来なかったことが実現出来るかもしれません。 まずは、「こんなことはできるの??」といった簡単なご質問からお待ちしております!

レッドボックスに相談!
  • TwiiterTwiiter
  • FacebookFacebook
  • はてなブックマークはてなブックマーク
  • PocketPocket

最初のサイドバー

人気記事

まだデータがありません。

定額CDN

高品質×低価格
定額CDNサービス

お客様のご予算・ご要望をお伺いし、より効率がいい負荷分散システムを提供します。

カテゴリー一覧

  • CDN
  • CMS
  • Linux
  • Network
  • OSS
  • Vmware
  • Web高速化
  • WordPress
  • おすすめ記事
  • セキュリティ

キーワードから探す

1812j acl brotli CDN CDN仕組み centos chrome cisco Client HInts curl ESXi5 gzip HLS http http/2 https httpヘッダ HTTPヘッダー linux pat pppoe router server push Service Worker varyヘッダー Vmware vmware tools VOD WEB最速王 WEB高速化 zabbix キャッシュ コンテンツ圧縮 スクリプト デバッグ バックアップ バックエンド フロントエンド レスポンスタイム測定 仕組み 優勝 圧縮 画像リサイズ 調査方法 高速化

UPDATE新着投稿記事

HTTP/3 の特徴 HTTP/2とQUICの違い

6/29CDN, おすすめ記事

CDN開始前に確認すべきポイント一覧

CDN を導入する上で確認すべき注意点とは?

6/1CDN

オンライン動画をCDNで負荷分散 教育

オンライン学習動画をCDNで負荷分散(テレワーク対策)

4/19CDN

HTTP/2 Server Pushの仕組みとCDN

HTTP/2 Server Pushとは?(CDN サーバープッシュでWeb高速化)

11/10CDN, Web高速化

PICK UPおすすめ記事

  1. CDN
    Lastmodified etag HTTPヘッダ HTTPヘッダチューニング Etag・Last-Modified
    2015.06.29
  2. CDN
    HTTP Expiresヘッダ HTTPヘッダチューニング Expiresヘッダについて
    2015.07.06
  3. CDN
    CDNとは? 第1回 CDN の 仕組み (CDNはどんな技術で何が出来るのか)
    2015.05.18
  4. CDN
    HTTP/2の特徴 HTTP/1.1との違い HTTP/2の特徴 HTTP/1.1との違いについて
    2015.11.02
  • お問い合わせ
  • 運営会社

Footer

国産CDNのレッドボックス

レッドボックスはコンテンツ配信に特化したプロフェッショナルチームです。

お電話でもお気軽にお問い合わせください!
TEL.03-6431-0076
営業時間 10:00 – 18:00(平日)

Copyright © 2017–2025 REDBOX - All Rights Reserved

よりよいエクスペリエンスを提供するため、当ウェブサイトでは Cookie を使用しています。引き続き閲覧する場合、Cookie の使用を承諾したものとみなされます。OK