2012-04-20 2 views
-1

У меня есть эти две переменные php: $img1src и $img2src, (их PHP не имеет значения, поскольку вы можете эхо-переменную php в любом месте), они оба имеют URL-адрес изображения. Мне было интересно, могу ли я предварительно загружать эти изображения или кэшировать их.Предварительная загрузка изображений для обновления, кеш

Моя цель: когда кто-то обновит страницы, которую я хочу, чтобы эти фотографии мгновенно появляются в <img src >.

+1

Этот вопрос остро страдает от большего количества людей в переполнении стека, требующих прочитать [эту статью.] (Http://mattgemmell.com/2008/12/08/what-have-you-tried/) – Blake

ответ

0

Кэширование изображения на самом деле не является заданием для PHP. PHP должен использоваться, чтобы решить, показывать или нет. (Есть кеширование вещей, которые вы можете делать с PHP, но не в том же смысле.) По сути, вы хотите сделать запрос браузером второго второго изображения. После того, как браузер получит изображение, он должен автоматически отправить параметр «if-modified-by» в заголовке. В следующий раз, когда вы загружаете страницу, код ответа должен быть 304, и ваше изображение должно загружаться мгновенно. Вы можете выбирать из множества способов сделать это. Загрузите изображение с помощью javascript после загрузки страницы (чтобы предотвратить дополнительное время загрузки), или вы можете просто добавить тег изображения, который скрыт на странице где-нибудь.

Я также не тестировал его, но вы можете отправить запрос ajax прямо на изображение. Я не уверен, будет ли этот способ кэшировать его или нет.

EDIT: Это не самое изящное решение, но оно должно получить эту идею.

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> 
+0

Можете ли вы привести пример, это звучит точно так, как я хочу! –

+0

Не ajax запрашивает загрузочное изображение с помощью javascript. –

+0

Не могли бы вы объяснить, что это делает? –

0

Конечно, вы можете, попробуйте это javascript:

var image1 = new Image(), image2 = new Image(); 
image1.src = <?php echo $img1src; ?>; 
image2.src = ?<php echo $img2src; ?>; 

Это должно предварительно загрузить изображение таким образом, когда вы добавляете в img тег в DOM изображение должно появиться сразу.

+0

Да, но я 'm глядя, чтобы загрузить изображения, а затем просматривать их сразу после обновления страницы –

+0

@AaronBoswell: они будут кэшироваться в браузере, поэтому, если они предназначены для отображения на странице обновления, они будут отображаться сразу (после код '301 не изменен' отправлен назад) – qwertymk

+0

javascript vars cache автоматически? –

0

Если ваша цель состоит в том, чтобы сделать меньше HTTP-запросов в целом: вы можете попробовать CSS Sprites и/или Data Url методы отображения этих изображений. Эти методы будут наиболее эффективными, когда изображения будут меньше.

+0

http://spriteme.org/ - Это отличный и простой спрайт для инструмента «чайники». – Blake

+0

Моя цель - сделать эти изображения загруженными на страницу, и когда вы обновляете, они мгновенно отображают предварительно загруженные изображения. Будет ли CSS Sprites законным способом сделать это? –

+0

@ Аарон. Это кеширование. Некоторые клиенты могут не иметь кеша, поэтому вы не можете заставить это на всех. – Blake

1

Я не собираюсь предоставлять конкретный код, потому что я не хочу давать вам рыбу, а скорее показываю, как Google является удочкой.

Я googled "php cache images tutorial" просто чтобы посмотреть, что будет. Ниже приведен большой ресурс.

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

Не удается получить гораздо лучше, чем это.

Смежные вопросы