6

iFrame を更新しようとしている Web ページがあります。<input />ボタンとjavascriptのようなものでやろうとしています。キャッシュをクリアしないと iFrame をリロードできないようです。PHPにキャッシュをクリアさせると、さらに良くなります。

編集-更新

これがインラインでの実用的な実装です。

    <input type="button"  onClick="javascript: var iFrame = document.getElementById('compilePreview'); iFrame.src = '<? echo ($myFile); ?>?random=' + (new Date()).getTime() + Math.floor(Math.random() * 1000000);" value="Reload Preview" />
    <iframe id="compilePreview" src="<? echo ($myFile); ?>" width="940"></iframe>

そしてもちろん、オンロードはすぐに続き、ボタンは不要になりました。

    <script>
    window.onload=refreshIframe;
    function refreshIframe(){
    var iFrame = document.getElementById('compilePreview');
    iFrame.src = '<? echo ($myFile); ?>?random=' + (new Date()).getTime() + Math.floor(Math.random() * 1000000);
    }
    </script>
4

3 に答える 3

17

最初の選択肢は、おそらくHTTPヘッダーまたは<meta>タグのいずれかを使用してWebサーバーからiframeページのブラウザーキャッシュを制御することです(リファレンスを参照)。

<meta HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE">
<meta HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">

それらを変更できない場合は.src、キャッシュを回避するために毎回異なるクエリパラメータを持つiframeにを設定できます。

例えば:

iframeObj.src = "http://www.example.com/page/myframe.html?random=" + (new Date()).getTime() + Math.floor(Math.random() * 1000000);
于 2012-08-27T02:21:51.007 に答える
2

これは、サーバー側で行うべきことであり、次のような HTTP ヘッダーを介して制御されます。

<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sun, 29 Jul 2012 00:00:00 GMT"); // some day in the past
于 2012-08-27T02:20:15.243 に答える
1

次のようなことができます

<iframe src="<?php echo $url.'#nocache'.time(); ?>">
#document</iframe>

を使用するかどうかについても心配することなく、URL で GET パラメーターを許可するのはどれですか? または&あなたのランダムのために。

于 2015-02-04T04:42:03.637 に答える