ホーム > サポート・マニュアル > チュートリアル > 組み込みのJavascript > post includeの結果をキャッシュさせない方法

post includeの結果をキャッシュさせない方法

ドキュメント最終更新日時:2010/12/03 20:50

タグ:JavaScript js-post_include Ajax 

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" />

ドキュメントの内容に関するお知らせフォーム

内容に誤り・現行バージョンと異なる部分がありましたら、下記のフォームよりお知らせください。


お名前
 
メールアドレス(任意)
 
お知らせ内容
Cookieに保存

  • オンラインセミナー
  • イベントスケジュール
  • ユーザーフォーラム
  • Twitterでa-blog cmsをフォローしてください!

携帯アクセス解析