cache в IE6-7
Ребята
Все привет. Я столкнулся с такой проблемой что у меня не наступает событие onload в IE6-7, когда я возращаюсь на страничку кнопкой BACK или просто по ссылкам навигатции(((((( А на него у меня повешена функция - и она не запускается(((( Видимо страница кэшируется, потому как при удалении Temporary Internet Files - все работает. А иначе почему не наступает событие onload Я пытался по всякому убить кэш: на странице у меня стоят: <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="pragma" content="no-cache" /> <META HTTP-EQUIV="Expires" CONTENT="Mon, 04 Dec 1999 21:29:02 GMT"/> <!--это скрипт, который у меня не вызывается--> <script type="text/javascript" language="JavaScript" src="<%=BaseURL()%>js/banerrotate.js?<%=rnd%>"></script> window.onload = requestdata; document.body.onload = requestdata; document.getElementsByTagName.onload = requestdata; и даже в коде у меня вот что: Код:
Response.AddHeader "Pragma", "No-Cache" и ничего не помогает при повторном заходе на страничку страница уже жестоко закэширована и ничего не помогает(((( може кто-нить сталкивался с такой проблемой? Ах да, еще после пути к скрипту у меня стоит вопросик))) с рандомным числом в конце, но и он не помог)) Может у меня кэширование стоит на IIS? |
А вы не вешайте ничего на window.onload. Самое простое решение -- это подключать скрипты в конце страницы.
|
to Kolyaj
я пробовал в конце страницы подключать, спасибо Оказалось я был не прав, скрипт у меня не кэшировался(( кэшировались картинки которые он "крутил" Они брались из локального кэша несмотря на то что все было сделано что бы его убить, но это особенности IE!!! Проблема решалась тем, что к оде img.onload оказалось выше img.src ))) И все заработало!!! |
чтоб картинки не кэшировались, подставляйте к ихнему src в конце ?=случайное_число.
|
А такое побороть можно?
iframe вставляется через JS таким способом:
Код HTML: <script> document.body.innerHTML += '<iframe ' + 'name="nn' + Math.round(Math.random()*1000) + '" id="nnn' + Math.round(Math.random()*1000) + '" src="http://site.wt/v.php?r=' + Math.random() + '"></iframe>'; </script> IE 7 кэширует его и при update по F5 значение r не меняется несмотря на random-значение. Как сделать так чтобы IE загружал новый src? v.php использует header("Expires: Mon, 26 Jul 1997 05:00:00 GMT"); // Date in the past header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT"); // always modified header("Cache-Control: no-store, no-cache, must-revalidate, max-age=0"); // HTTP/1.1 header("Cache-Control: post-check=0, pre-check=0", false); header("Pragma: no-cache"); // HTTP/1.0 и не помогает. |
Локально у меня
<script> document.body.innerHTML += '<iframe ' + 'name="nn' + Math.round(Math.random()*1000) + '" id="nnn' + Math.round(Math.random()*1000) + '" src="http://site.wt/v.php?r=' + Math.random() + '"></iframe>'; </script> работает нормально. Т.е. число в IE7 у iframe'a меняется. |
Не может быть!
А как ты определяешь что меняется?
Пусть фрейм выведет число внутри себя! А то скрипт например пишет что число изменено а в запросе приходит старое число. Попробуй сделать разные домены для запускаемого файла и фрейма |
Я пробовал локально, а определял через "IE developer toolbar".
|
ну это через сам js
ну это через сам js через "IE developer toolbar".
Т.е. src значение присваивается новое, а уходит во ahtqv старое |
!
document.body.innerHTML += '<iframe id="fr"></iframe>';
document.getElementById('fr').src = 'http://viewtime.wt/v2.php?r=' + Math.random(); IE в новый создаваемый фрейм загружает прошлый адрес, а потом обновляет его и получается две загрузки фрейма, вот отстойный браузер, чтоб он умер бесследно... |
тый айдишку фрему рандомом проставляй и будет тебе щастье...
|
не катит
Цитата:
Такое ощущение что IE невменяемый... |
в первом варианте src сразу вставлялось... А надо сначала втавить фрейм с рандомным id, а потом уже найти его в дереве документа и проставить ему src.
|
Цитата:
var rr = 'i'+Math.round(Math.random()*100000); document.body.innerHTML += '<iframe id="'+rr+'"></iframe>'; document.getElementById(rr).src= 'http://test.wt/v.php?r='+Math.random(); Результат: Array ( [r] => 0.22127625157030622 ) Array ( [r] => 0.22127625157030622 ) Array ( [r] => 0.1377826070750372 ) Array ( [r] => 0.1377826070750372 ) Array ( [r] => 0.8080131587721691 ) Тут нужен способ посерьезнее! |
у меня всё отлично работает... Давай ссылку на тестовую страничку, посмотрим...
|
Цитата:
Ты видишь только результат обработки второй загрузки "не кэшированной". А первая промелькивает мгновенно. Она то и несет в себе старые данные. Следи внимательно за потоком информации... Результат загрузки и двух нажатий F5: Array ( [r] => 0.22127625157030622 ) Нажимается F5 Array ( [r] => 0.22127625157030622 ) Array ( [r] => 0.1377826070750372 ) Нажимается F5 Array ( [r] => 0.1377826070750372 ) Array ( [r] => 0.8080131587721691 ) |
Вставь в файл-приемник запроса строку:
file_put_contents('income.txt', print_r($_GET, true)."\n", FILE_APPEND); и загляни в файл income.txt после F5 |
Позволил себе подправить скрипт, так работает:
<script> document.write('<iframe name="nn' + Math.round(Math.random()*1000) + '" id="nnn"></iframe>'); ifr = document.getElementById('nnn'); ifr.src='http://site.wt/v.php?r=' + Math.random(); </script> Смотрел с помощью HTTPSpy Вообще конечно IE7 как-то неправильно себя ведет, отправляя запросы на один и тот же адрес... |
Цитата:
Чтобы убедиться вставьте <?php file_put_contents('income.txt', print_r($_GET, true)."\n", FILE_APPEND); ?> в файл приемник |
вопрос меняется (т.к. нет времени бороться с IE)
Можно ли считать, что столь быстрая смена src не позволит загрузиться кэшированной странице на удаленном домене с неидеально быстрой связью?
|
У меня сейчас нет возможности, а точнее времени, запускать сервер и там что-то пробовать.
Через HTTPSpy если смотреть, уходит один запрос. Больше ничем помочь увы не могу, м.б. кто-то другой сможет =( |
Внутрений голос
Внутрений голос говорит, что код php будет выполнен при получении только заголовков запроса даже, если сеанс связи будет прерван сразу после начала исполнения php-файла.
Т.е. полагаться на это нельзя.. В других браузерах проблема решилась при помощи обертывания конструкции в setTimeout("...", 1); А IE подставил меня :( Я в попе. |
guest, у меня аналогичная проблема, вы обошли ее как-нибудь?
|
Часовой пояс GMT +3, время: 16:03. |