php で画像を送信してたんですよ。
画像なので、キャッシュして良いんですけど。なぜかキャッシュしないんですよね。
HTTPキャッシュのヘッダみたら・・・
Expires: ... LastModified: ... E-tag: .. Pragma: no-cache
え? nocacheが送られてる?なんで。
pragma:no-cache どこから出てきた。
散々しらべたらまじか。 session_start(); すると no-cacheにされるのがデフォルト仕様
<?php session_start();
これをすると
session_cache_limter("no-cache");
が自動で使われる.
この値をほうっておくと HTTPヘッダに
Expires: 過去 Pragma: no-cache
が付与されて、キャッシュの制御が面倒になる。
キャッシュを効かせたいときは
session_cache_limter("public");
などにしたうえで、
- キャッシュキー(いずれか1つが必須
- Last-modified
- E-tag
- Cache-Control
- public / private
- max-age
を付与しないと上手くキャッシュしない。
セッションを使うときは
session_cache_limiter
をペア使うことを意識しておくと。キャッシュが効かないとコネクション数が増えちゃったり、無駄な処理が増えるのでサーバー限界早すぎる。
詳しくは、 php.ini の設定項目なんだけど。気づかないよねコレ。
2017-06-22
わかりにくいので追記