в общем проблема в следующем если я пытаюсь пере-запросить картинку вот так

Выделить код

Код:

<script type="text/javascript">
function refresh_security_code()
{
document.getElementById('security_code').innerHTML = '<img src="http://localhost/code_image/index.php" width="100" height="48" />';        
}
</script>

при этом Firefox обновляет ее только один раз ....
а в случае с кодом от спамеров не хотелось бы перезагружать всю страничку....
как это вылечить???? заранее спасибо!

Правильный вариант, научить скрипт code_image/index.php отдавать правильные заголовки запрещающие кеширование.
Альтернативный вариант, дописывать к адресу картинки случайное число, например текущее время в миллисекундах

ну на счет случайных чисел идея была .. надеялся что есть какае-то деректива в тегах .... но ладно рандом так рандом.

зависит от картинки, но скорее всего вариант с рандомом не самый удачный по тому, что кешировать ненужные данные смысла не имеет

MrSkinner
Правильный вариант, научить скрипт code_image/index.php отдавать правильные заголовки запрещающие кеширование.

Я конечно понимаю что правильно это хорошо но вот что бы я не пробовал записывать в header, firefox побаку и он все равно заносит картинку в кеш!

один из вариантов header

Выделить код

Код:

header ("Content-type: image/png");
header("Cache-Control: no-store"); 
header("Expires: " . date("r"));

Все статьи про запрет кеширования мне рассказывают именно про такой способ если знаете другой подскажите.

перепробовал все что было в мануале (RFC2616 - Hypertext Transfer Protocol -- HTTP/1.1)

Выделить код

Код:

Cache-Control   = "Cache-Control" ":" 1#cache-directive

    cache-directive = cache-request-directive
         | cache-response-directive

    cache-request-directive =
           "no-cache"                          ; Section 14.9.1
         | "no-store"                          ; Section 14.9.2
         | "max-age" "=" delta-seconds         ; Section 14.9.3, 14.9.4
         | "max-stale" [ "=" delta-seconds ]   ; Section 14.9.3
         | "min-fresh" "=" delta-seconds       ; Section 14.9.3
         | "no-transform"                      ; Section 14.9.5
         | "only-if-cached"                    ; Section 14.9.4
         | cache-extension                     ; Section 14.9.6

     cache-response-directive =
           "public"                               ; Section 14.9.1
         | "private" [ "=" <"> 1#field-name <"> ] ; Section 14.9.1
         | "no-cache" [ "=" <"> 1#field-name <"> ]; Section 14.9.1
         | "no-store"                             ; Section 14.9.2
         | "no-transform"                         ; Section 14.9.5
         | "must-revalidate"                      ; Section 14.9.4
         | "proxy-revalidate"                     ; Section 14.9.4
         | "max-age" "=" delta-seconds            ; Section 14.9.3
         | "s-maxage" "=" delta-seconds           ; Section 14.9.3
         | cache-extension                        ; Section 14.9.6

    cache-extension = token [ "=" ( token | quoted-string ) ]

IE и дримвивер явно меняют свое поведении а [firefox] глубоко побаку!

в общем временно решил проблему так:

Выделить код

Код:

<script type="text/javascript">
function refresh_security_code()
{
document.getElementById('security_code').src = 'http://localhost/code_image/index.php?' + Math.random();    
}
</script>

если кто что присоветует по поводу заголовка то буду очень признателен ... :)

вот пример картинки, тут код заголовков:

Выделить код

Код:

header('Expires: Mon, 26 Jul 1997 05:00:00 GMT');
        header('Cache-Control: no-store, no-cache, must-revalidate');
        header('Cache-Control: post-check=0, pre-check=0', FALSE);
        header('Pragma: no-cache');