========================================================== Cacheをテストする際の注意事項 ========================================================== Cacheをテストする場合、config.sfcache.inc.phpと config.cfcache.inc.php を変更するわけであるが、これらの変数はloader javascriptの 一部となっているので、サーバー側のcacheフォルダ内にある loaderファイルを削除しなければ、変更は効果がない。 ========================================================== Cacheを全く行わないケース ========================================================== 以下の設定を想定する ---------------------------------------------------------- sfcache $cfg["mode"] = 0 cfcache $cfg["cfc-loader"] = 0; $cfg["cfc-local"] = 0; ---------------------------------------------------------- loaderのcidも、mainのcidも、ページを更新するたびに変わる。 Devで観察すると、2回、サーバー側にアクセスがある。 一回目はスクリプトタグのアクセスであり、 2回目はloaderスクリプトからのajaxコールである。 ========================================================== クライエント側でCacheをしないケース ========================================================== 以下の設定を想定する ---------------------------------------------------------- sfcache $cfg["mode"] = 1 cfcache $cfg["cfc-loader"] = 0; $cfg["cfc-local"] = 0; ---------------------------------------------------------- loaderのcidおよびmainのcidは、ページを更新しても変わらなくなる。 Devで観察すると、2回、サーバー側にアクセスがある。 一回目はスクリプトタグのアクセスであり、 2回目はloaderスクリプトからのajaxコールである。 ========================================================== cfc-localをオンにしないケース ========================================================== 以下の設定を想定する ---------------------------------------------------------- sfcache $cfg["mode"] = 1 cfcache $cfg["cfc-loader"] = 1; $cfg["cfc-local"] = 0; ---------------------------------------------------------- loaderのcidおよびmainのcidは、ページを更新しても変わらない。 Devで観察すると、1回のみサーバー側にアクセスがある。 スクリプトタグはすでにキャッシュされているので、 スクリプトのロードはない。 結局、loaderスクリプトからのajaxコールのみがある。 ========================================================== ローダーのリロードをテストする ---------------------------------------------------------- $resp["cmd-update-loader"] = 1; ========================================================== 以下の設定を想定する ---------------------------------------------------------- sfcache $cfg["mode"] = 1 cfcache $cfg["cfc-loader"] = 1; ---------------------------------------------------------- 次に、サーバー側のloaderのキャッシュを削除する ここで(Hard Reloadではなく)「Normal Reload」を行うと、 ローダーのリロードが行われる。 これは、クライエント側にはまだloaderスクリプトがキャッシュ されており、このcidがサーバー側に送られてくるが、 サーバー側のloaderはないので、cidのミスマッチということになる。 Hard Reloadを行った場合は、新たなloaderのスクリプトが サーバー側で作成、キャッシュされ、これがクライエント側に 送信された後、サーバー側にそのcidを送り返してくるが、 当然このcidはサーバー側でキャッシュされたloaderと 同じものなのでcidはマッチする。従ってリロードは行われない。 ========================================================== サーバー側キャッシュでloaderスクリプトに余計な一行を加えて、 フォーマットを壊してみる ========================================================== 上記のローダーのリロードと同じことが起きる。 サーバー側キャッシュでloaderが削除されたと解釈されるので、 $resp["cmd-update-loader"] = 1;が実行される。 ========================================================== ローダー以外のデータで「cid変化無し」のケースをテストする ---------------------------------------------------------- $rec = "="; ========================================================== 以下の設定を想定する ---------------------------------------------------------- sfcache $cfg["mode"] = 1 cfcache $cfg["cfc-local"] = 1; ---------------------------------------------------------- 次に、通常の更新を行うと、「cid変化無し」の結果が出る。 ========================================================== サーバー側キャッシュでmainスクリプトに余計な一行を加えて、 フォーマットを壊してみる ========================================================== サーバー側キャッシュでmainが削除されたと解釈されるので、 上記の「cid変化無し」が破れて、mainのスクリプトが、 クライエント側へ送られる。 ==========================================================