私はこれらの2つのphp変数を持っています:$img1src
そして$img2src
、(それらはどこにでもphp変数をエコーできるのでPHPは無関係です)それらは両方とも画像のURLを保持します。これらの画像をプリロードできるのか、それともキャッシュできるのか疑問に思いました。
私の目標は、誰かがページを更新したときに、これらの写真をすぐにに表示したいということです<img src >
。
私はこれらの2つのphp変数を持っています:$img1src
そして$img2src
、(それらはどこにでもphp変数をエコーできるのでPHPは無関係です)それらは両方とも画像のURLを保持します。これらの画像をプリロードできるのか、それともキャッシュできるのか疑問に思いました。
私の目標は、誰かがページを更新したときに、これらの写真をすぐにに表示したいということです<img src >
。
魚をあげたいわけではなく、Google がいかに釣り竿であるかを示したいので、特定のコードを提供するつもりはありません。
何が表示されるかを確認するためだけにグーグルで検索"php cache images tutorial"
しました。以下は素晴らしいリソースです。
http://dtbaker.com.au/random-bits/how-to-cache-images-generated-by-php.html
それよりずっと良くなることはできません。
確かに、これを試してみてくださいjavascript
:
var image1 = new Image(), image2 = new Image();
image1.src = <?php echo $img1src; ?>;
image2.src = ?<php echo $img2src; ?>;
これで画像がプリロードされるため、画像にimg
タグを追加するとDOM
すぐに画像が表示されます。
画像のキャッシュは、実際には PHP の仕事ではありません。PHP を使用して、表示するかどうかを決定する必要があります。(PHP で実行できるキャッシングがありますが、同じ意味ではありません。) 本質的に、実行したいことは、クライアントのブラウザーに 2 番目のイメージを要求させることです。ブラウザが画像を取得すると、ヘッダーで「if-modified-by」パラメータが自動的に送信されます。次にページを読み込むと、応答コードは 304 になり、画像がすぐに読み込まれます。これを行うには、さまざまな方法から選択できます。ページの読み込み後に JavaScript で画像を読み込む (追加の読み込み時間を防ぐため) または、ページのどこかに隠されている画像タグを含めることができます。
私もテストしていませんが、画像に ajax リクエストを直接送信できる可能性があります。その方法でキャッシュするかどうかはわかりません。
編集:これは最もエレガントな解決策ではありませんが、アイデアを理解する必要があります。
JS の例:
<?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>
全体的に http リクエストを減らすことが目的の場合:これらの画像を表示するCSS スプライトおよび/またはデータ URLメソッドを試すことができます。これらの方法は、画像が小さい場合に最も効果的です。