以下の内容はhttps://takuya-1st.hatenablog.jp/entry/2016/05/01/004003より取得しました。


セッション使うとキャッシュが効かない!? session_start で pragma : no-cache が自動付与される。

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

わかりにくいので追記

参考資料

PHP: session_cache_limiter - Manual




以上の内容はhttps://takuya-1st.hatenablog.jp/entry/2016/05/01/004003より取得しました。
このページはhttp://font.textar.tv/のウェブフォントを使用してます

不具合報告/要望等はこちらへお願いします。
モバイルやる夫Viewer Ver0.14