ホーム > サポート・マニュアル > チュートリアル > 組み込みのJavascript > post includeの結果をキャッシュさせない方法
a-blog cmsでは、フォームの送信ボタンを押さずに結果をAjaxを使用して表示できる機能(js-post_include-ready)が標準で実装されています。(v1.3.0より)
基本的にはキャッシュ機能が利用できる状態の時には、post_include機能で追加で表示されるHTMLについても部分的にキャッシュされる事になります。そのためソート順をランダムとしていたとしてもキャッシュされ同じものが表示される事になります。
キャッシュ機能が利用されている時にも、ランダムが利用できるようにする方法を紹介する。
通常のフォームの送信ボタンを押さずに結果をAjaxを使用して表示
class="js-post_include-ready" を設定する事で、ページの表示完了後に name="tpl" で宣言されたテンプレートファイル include/banner.html が表示されます。
<form action="" method="post" class="js-post_include-ready"> <input type="hidden" name="tpl" value="include/banner.html" /> <input type="hidden" name="ACMS_POST_2GET" /> </form>
上記を改良してキャッシュさせないようにします。
上記をキャッシュさせずに実行する
実際にはキャッシュさせないという事ではなく、毎回違うURLでアクセスしているような状態にして処理しています。アクセス数が多いサイトの際にはキャッシュファイルサイズが大きくなりますので注意が必要になります。
<form action="" method="post" class="js-post_include-ready"> <!-- キャッシュがオンでもランダム表示が可能になる記述ここから--> <input type="hidden" name="hash" value="Math.random()" class="js-post_include-eval_value" /> <input type="hidden" name="query[]" value="hash" /> <!-- キャッシュがオンでもランダム表示が可能になる記述ここまで--> <input type="hidden" name="tpl" value="include/banner.html" /> <input type="hidden" name="ACMS_POST_2GET" /> </form>
class="js-post_include-eval_value"が書かれている事でvalueにはMath.random()というプログラムが実行され編集される事になります。
<input type="hidden" name="hash" value="Math.random()" class="js-post_include-eval_value" />
上記のHTMLが実行されると、0から1までのランダムな実数を生成するコードになり実際には以下のようになります。
<input type="hidden" name="hash" value="0.8770308238454163" class="js-post_include-eval_value" />
http://example.com/?hash=0.8770308238454163 のようなアドレスでアクセスする事になりますが、?hash= というアドレスにするためには以下の1行も必要になります。
<input type="hidden" name="query[]" value="hash" />
このドキュメントと関連している内容のエントリー
- 関連度 3 : 検索エンジンからのキーワードでサイト内検索結果を表示する(post include)
- 関連度 3 : 送信ボタンを押さずに検索結果を表示する(post include)
- 関連度 3 : ページを移動せずにフォームの検索結果を表示する(post include)
- 関連度 1 : https関連のリンクを書き換える機能
- 関連度 1 : 特定の部分の表示/非表示をフェード効果で切り替える機能(js-fader)
ドキュメントの内容に関するお知らせフォーム
内容に誤り・現行バージョンと異なる部分がありましたら、下記のフォームよりお知らせください。



