2012-04-20 8 views
-1

$img1src$img2srcの2つのPHP変数があります。これらの変数は、PHPの変数をどこにでもエコーすることができるのでPHPとは関係がありません。私はこれらの画像をあらかじめ読み込んでおくことができたのか、それともキャッシュすることができるのだろうかと思いました。画像をリフレッシュするためのプリロード、キャッシュ

私の目標は次のとおりです。私はこれらの写真を瞬時に<img src >に表示したい誰かリフレッシュページ。あなたは、このjavascriptを試すことができます確かに

+1

この質問は、[この記事を読む必要があるスタックオーバーフローに関するより多くの人々に深刻な苦しんでいます。(http://mattgemmell.com/2008/12/08/what-have-you-tried/) – Blake

答えて

0

イメージをキャッシュすることは、PHPの仕事ではありません。それを表示するかどうかは、PHPを使用して判断する必要があります。 (PHPでできることはキャッシングがありますが、同じ意味ではありません)。基本的に、クライアントブラウザが第2のイメージを要求するようにします。ブラウザがイメージを取得すると、ヘッダーに「if-modified-by」パラメータが自動的に送信されます。次回にページをロードすると、レスポンスコードは304になり、イメージはすぐに読み込まれます。これを行うにはさまざまな方法があります。ページが読み込まれた後に(追加の読み込み時間を防ぐために)JavaScriptを使用して画像を読み込むか、ページのどこかに隠れている画像タグを含めることができます。

これもテストしていませんが、画像に直接ajaxリクエストを送信することができます。その方法でキャッシュするかどうかはわかりません。

編集: これは最も洗練された解決策ではありませんが、それは全体的なアイデアを得る必要があります。

JS例:あなたの目的は、HTTP少なく全体的に要求することです

<?php 
session_start(); 
if (!isset($_SESSION['graphic'])) $_SESSION['graphic'] = "http://www.tomsfreelance.com/laptop/DSC_0011.JPG"; 
else $_SESSION['graphic'] = "http://www.tomsfreelance.com/laptop/DSC_0012.JPG"; 
?> 
<html> 
<head> 
<script> 
function loadImage() { 
    document.getElementById('preload').style.backgroundImage = "url(http://www.tomsfreelance.com/laptop/DSC_0012.JPG)"; 
} 
</script> 
</head> 
<body onload="loadImage();"> 
<div id="preload" style="display: none;"></div> 
<img src="<?php echo $_SESSION['graphic'];?>"> 
</body> 
</html> 
+0

あなたは例を挙げてください、これは私が欲しいものとまったく同じように聞こえますか? –

+0

ajaxがjavascriptを使用して画像を読み込んでいません。 –

+0

あなたはそれが何をしているのか正確に説明できますか? –

0

var image1 = new Image(), image2 = new Image(); 
image1.src = <?php echo $img1src; ?>; 
image2.src = ?<php echo $img2src; ?>; 
あなたは画像がすぐに表示されます DOMから imgタグを追加するときに画像をプリロードする必要があり

+0

はい、私は画像をロードしてすぐにページをリフレッシュするときに表示されます –

+0

@AaronBoswell:これらはブラウザにキャッシュされるので、ページをリフレッシュしたときに表示されるようになっているとすぐに表示されます'301非変更'コードが返送されます) – qwertymk

+0

javascript varsは自動的にキャッシュされますか? –

0

場合:あなたはこれらの画像を表示するCSS Spritesおよび/またはData Url方法を試すことができます。これらの方法は、画像が小さいときに最も効果的です。

+0

http://spriteme.org/ - ダミーツールのための素晴らしいスプライトです。 – Blake

+0

私の目的は、これらのイメージをページにロードすることです。リフレッシュすると、プリロードされたイメージが即座に表示されます。 CSS Spritesはこれを行う正当な方法ですか? –

+0

@Aaron、それはキャッシングのことです。いくつかのクライアントはキャッシュを持たないことを選ぶことができるので、強制することはできません。 – Blake

1

私はあなたに魚を与えたくないので、特定のコードを提供するつもりはありませんが、むしろGoogleがどのように釣り竿であるかを示します。

私はgoogled "php cache images tutorial"ちょうど何が起こるか見るために。以下は大きなリソースです。

http://dtbaker.com.au/random-bits/how-to-cache-images-generated-by-php.html

それよりもはるかに良くなることはできません。