server
Новичок
Кеширование динамических изображений в фотоальбоме
Решаю задачу создания фотоальбома на javascript . Вот код который не работает с кэшированием для изображений которые генерируется (для статических нужно просто заменить /image/777 - на /image/777.jpg например и.т.д и тогда всё сохраняется в объектах Image и подгружаются только когда такой картинки нет. Для генерируемых изображений - они все время подгружаются, в этом и проблема ):
Я посылаю на запрос по url следующие заголовки (я так понимаю что тут собака зарыта ((( ) :
В чем проблема не знаю....
Решаю задачу создания фотоальбома на javascript . Вот код который не работает с кэшированием для изображений которые генерируется (для статических нужно просто заменить /image/777 - на /image/777.jpg например и.т.д и тогда всё сохраняется в объектах Image и подгружаются только когда такой картинки нет. Для генерируемых изображений - они все время подгружаются, в этом и проблема ):
PHP:
// JAVASCRIPT
var id = 0, load_time_wait = 30,timer_id,loop_index;
var ArrayImg = new Array();
function onload (obj) {
var i = 0;
if (obj.complete) {
document.image.src= obj.scr;
//alert (obj.scr);
clearInterval(timer_id);
loop_index = 0;
} else {
loop_index++;
if (loop_index > load_time_wait)
{ alert ('EXIT!!');
clearInterval(timer_id);
}
}
}
function post (action) {
var a = action;
if (ArrayImg[0] == null) {
ArrayImg[0] = new Image();
ArrayImg[0].scr = "/image/777" ;
}
document.image.src = ArrayImg[0].scr;
if (a == 'up') id++;
if (a == 'down') id--;
if (id < 1) id = 15;
if (id >15) id = 1;
if (ArrayImg[id] == null) {
ArrayImg[id] = new Image();
ArrayImg[id].scr = "image/"+id ;
obj = ArrayImg[id];
} else obj = ArrayImg[id];
clearInterval(timer_id);
timer_id = setInterval("onload(obj)",1000);
}
PHP:
//PHP
ob_end_clean();
$headers = array(
'Content-Type: '.mime_header_encode('image/jpeg'),
'Content-Length: '. $filesize,
'Last-Modified: ' . gmdate("D, d M Y H:i:s",mktime (0,0,0,1,1,2000)) . ' GMT',
'Expires: Mon, 26 Jul 2040 05:00:00 GMT',
'Cache-Control: max-age=10000000, s-maxage=1000000, proxy-revalidate, must-revalidate',
);
foreach ($headers as $header) {
$header = preg_replace('/\r?\n(?!\t| )/', '', $header);
header($header);
}
if ($fd = fopen('image.jpg', 'rb')) {
if (!ini_get('safe_mode')){
set_time_limit(0);
}
while (!feof($fd)) {
print fread($fd, 1024);
ob_flush();
flush();
}
fclose($fd);
}