コンテンツ

    サーバー応答 103 Early Hints

    HTTP ステータスコード 103 (Early Hints) とは

    HTTP ステータスコード 103 (Early Hints) は、新しいステータスコードであり、サーバーがクライアントにリソースに関する事前のヒントを送信できるようにします。この機能により、ページの読み込み速度が向上し、ブラウザがサーバーがリクエストを処理する前にリソースの読み込みを開始できます。

    103 - Early Hints

    ステータスコード 103 の仕組み

    • 定義と使用目的
      • クライアントが必要とする可能性のあるリソースを事前に通知すること。
      • ページの読み込みを高速化することを目的としています。
    • HTTP リクエストの文脈における動作
      • サーバーがリクエストを処理する過程で、103 ステータスコードを送信します。
      • クライアントはこのヒントを受け取り、必要なリソースを事前に取得できます。

    ステータスコード 103 の実際の適用

    このステータスコードを使用することで、ページの読み込みを最適化できます。

    • ページの読み込みを最適化する方法
      1. 例: フォントやスタイルシートの事前読み込み
      2. 例: キャッシュ可能なリソースの指定
    • ブラウザやクライアントとの相互作用
      • ブラウザがステータスコード 103 をどのように処理するか
      • さまざまなブラウザでのステータスコード 103 のサポート状況

    使用例

    以下は、ステータスコード 103 を実装するための具体的な例です。

    Node.js を使用したサーバーの実装例

    const express = require('express');
    const app = express();
    
    app.get('/', (req, res) => {
        res.set('Link', '; rel=preload; as=style');
        res.status(103).send();
        // メインのレスポンスを送信
        res.send('Hello World!');
    });

    この例では、スタイルシートの事前読み込みを指示しています。

    Python (Flask) を使用したサーバーの実装例

    from flask import Flask, Response
    
    app = Flask(__name__)
    
    @app.route('/')
    def index():
        headers = {'Link': '; rel=preload; as=style'}
        return Response(status=103, headers=headers)
    
    if __name__ == '__main__':
        app.run()

    この例でも、スタイルシートの事前読み込みを行っています。

    PHP を使用したサーバーの実装例

    <?php
    header('Link: ; rel=preload; as=style');
    http_response_code(103);
    echo 'Hello World!';
    ?>

    上記の PHP コードは、同様にスタイルシートの事前読み込みを指示しています。

    潜在的な問題とその解決策

    • ステータスコード 103 の使用に関するエラー処理
      • エラー: クライアントがステータスコード 103 をサポートしていない
      • 解決策: 古いブラウザに対するバックアッププランを用意する
    • ステータスコード 103 の不適切な使用を避ける方法
      • 一般的な間違いとその修正方法

    サーバーの設定方法

    ステータスコード 103 をサポートするためのサーバー設定方法について説明します。

    サーバー 設定手順
    Nginx location / { add_header Link '; rel=preload; as=style'; }
    Apache Header set Link "; rel=preload; as=style"

    これらの設定により、サーバーがクライアントに対してステータスコード 103 を適切に提供できるようになります。