例 2: IE でページ キャッシュを無効にする ユーザーがプロキシまたはキャッシュ内のデータではなく、毎回最新のデータを取得できるようにするには、次のヘッダーを使用できます。
CacheControl = no-cache プラグマ=キャッシュなし 有効期限 = -1 サーバー上の Web ページが頻繁に変更される場合は、有効期限を -1 に設定して即時有効期限を示します。 Web ページが毎日午前 1 時に更新される場合、有効期限を翌日の午前 1 時に設定できます。 HTTP1.1 サーバーが CacheControl = no-cache を指定すると、ブラウザーは Web ページをキャッシュしません。 古い HTTP 1.0 サーバーは Cache-Control ヘッダーを使用できません。したがって、HTTP 1.0 サーバーとの下位互換性のために、IE は Pragma:no-cache ヘッダーを使用して HTTP に対する特別なサポートを提供します。 クライアントが安全な接続 (https://) 経由でサーバーと通信し、サーバーが応答で Pragma:no-cache ヘッダーを返す場合、Internet Explorer は応答をキャッシュしません。 注: Pragma:no-cache は、安全な接続で使用される場合にのみキャッシュを防止します。安全でないページで使用された場合、処理は Expires:-1 と同じになりますが、ページはすぐに期限切れとしてマークされます。 http-equivメタタグ: http-equiv メタを使用して、HTML ページ内の指定された http メッセージ ヘッダーをマークできます。古いバージョンの IE は HTML メタ タグをサポートしていない可能性があるため、http メッセージ ヘッダーを使用してキャッシュを無効にすることをお勧めします。 例 3: ユーザーのブラウザにファイルが見つからないというメッセージを表示させます。 PHP の関数 header() は、Status ヘッダーをブラウザに送信できます。 例: header("ステータス: 404 見つかりません")。 ただし、ブラウザーから返される実際の応答は次のとおりです。
例 5: ヘッダー関数の前にコンテンツを入力 一般に、HTML コンテンツはヘッダー関数の前に出力できません。同様に、setcookie() 関数やセッション関数も出力ストリームにメッセージ ヘッダー情報を追加する必要があります。 header() が実行される前に echo などのステートメントがある場合、後で header() が発生したときに、「警告: ヘッダー情報を変更できません – ヘッダーは既に送信されています…」というエラーが報告されます。つまり、これらの関数の前にテキスト、空白行、復帰などを含めることはできません。exit() 関数を header() 関数の後に追加するのが最善です。 たとえば、次の誤った記述では、2 つの PHP コード スニペットの間に空白行があります。
理由: PHP スクリプトの実行が開始されると、http メッセージ ヘッダー (タイトル) 情報と本文情報を同時に送信できます。http メッセージ ヘッダー (header() または SetCookie() 関数から) はすぐには送信されません。これにより、デフォルトのヘッダー (Content-Type ヘッダーなど) を含むヘッダー情報を変更できます (たとえば、HTML または print() を使用して)。 call)、次に PHP 最初にすべてのヘッダーを送信し、次に HTTP ヘッダーを終了し、その後、ヘッダー情報を追加または変更する試みは許可されません。エラーメッセージが送信されます。 解決策: php.ini を変更してキャッシュ (output_buffering) をオンにするか、プログラム内でキャッシュ関数 ob_start()、ob_end_flush() などを使用します。原則として、output_buffering が有効な場合、スクリプトが出力を送信するときに PHP は HTTP ヘッダーを送信しません。代わりに、この出力を動的に増加するキャッシュにパイプ処理します (集中出力メカニズムを持つ PHP 4.0 でのみ使用可能)。ヘッダーは実際には送信されないため、ヘッダーを変更/追加したり、Cookie を設定したりすることができます。すべてのスクリプトが終了すると、PHP は自動的に HTTP ヘッダーをブラウザーに送信し、出力バッファーの内容を送信します。 |