2012-02-28 14 views
5

リフレッシュ時にランダムにURLのリストからURLを読み込むページを作成しようとしています。私がこれまでにやったことが分かった最善の方法は、PHPがファイルからランダムに行を取得し、それをiframeにロードすることです。これにより、トップバーに閉じるボタンが表示され、iframeに読み込まれたページが中断しないようにすることができます。Firefoxがダイナミックiframeにキャッシュをロードしています

私が気付いている問題は、いくつかのFirefoxを再読み込みした後、iframeをキャッシュに戻すだけで、新しいものは読み込まれないということです。 Ctrl + F5を押すとiframeに新しいページが読み込まれるため、キャッシュの問題だと思います。

私はthisの記事で見つかったjavascriptのピースだけでなく、アンチキャッシュメタタグの束を入れてみました。

これまでのところ、何も機能していません。誰かが良い回避策を知っているか、私のコードで何か間違っているのを見ていますか(私は非常に初心者です)。

ありがとうございました!ここで

コードです:

</html> 

<head> 
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache"> 
<META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 
<meta http-equiv="expires" content="FRI, 13 APR 1999 01:00:00 GMT"> 
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script> 

<script type="text/javascript"> 

function Ionload() 
{ 

$(parent.document).find("iframe").each(function() { 
    // apply the logic only to the current iframe only 
    if(this.contentDocument == window.document) { 
     // if the href of the iframe is not same as 
     // the value of src attribute then reload it 
     if(this.src != location.href) { 
     this.src = this.src; 
     } 
    } 
}); 

} 
</script> 

<?php 

class MyClass 
    { 
    function GetLine() 
     { 
      global $line; 

      srand ((double)microtime()*1000000); 
      $f_contents = file ("urlz"); 
      $line = $f_contents[array_rand ($f_contents)]; 

     } 

    function PrintVar() 
     { 
      global $line; 
      print $line; 
     } 
    } 

MyClass::GetLine(); 

?> 

<style type="text/css" media="all"> 
    html, body { 
     height: 100% 
    } 
    body { 
     margin: 0; 
     overflow: hidden; 
    } 
    #topbar { 
     height: 50px; 
     width: 100%; 
     border-bottom: 3px solid #666 
    } 
    #page { 
     height: 100%; 
     width: 100%; 
     border-width: 0 
    } 
</style> 

</head> 
<body> 

<div id="topbar"> 

<a href=<?php MyClass::PrintVar();?> target="_top">close</a> 

</div> 

</body> 

<iframe id="page" name="page" onload="Ionload()" src=<?php MyClass::PrintVar();?> frameborder="0" noresize="noresize"></iframe> 

</html> 

更新:

私はそれを固定してしまったGGGからいくつかの助けを借りて。ここでは関数への変更である:

function GetLine() 
    { 
     global $newline; 

     srand ((double)microtime()*1000000); 
     $f_contents = file ("urlz"); 
     $line = $f_contents[array_rand ($f_contents)]; 
     $newline = $line . "?foo=" . rand(); 

    } 

私は別のリロードからのシーケンスを実行する方法を知りませんでしたが、この作品のように、私が代わりに系列の乱数と一緒に行きました。

ページロード後2秒以内にFirefoxをリフレッシュしても問題は解決していますが、それでも問題はないことに気付きました。

答えて

3

ブラウザに強制的にキャッシュをスキップさせるように、ダミークエリ文字列をURLに貼り付けてみてください。

たとえば、www.google.comをロードする代わりに、www.google.com?foo=Nをロードします。ここで、Nは、負荷ごとに増加する数値です。

+0

PHPがファイルからリンクを引き出すのにこれを行う方法はありますか?私はPHPがとても新しいです。これは実際にそれを使用しようと私の最初の時間です。ありがとう。 – silverMASH

+0

はい、PHPの文字列連結に '.'(ドット)演算子を使用できます。 –

+0

ありがとう!私はそれが働いていると思う。元の投稿の解決策。 – silverMASH

関連する問題