Есть в Firefox такая "замечательная", уникальная функция как "кеширование содержимого веб страниц". И похоже что агрегат кеширует содержимое параметра "data" каждого объекта на странице. В результате чего javascript работает неадекватно, т.к. в этом параметре оказываются закешированные данные с прошлого визита этой страницы. Так вот как со стороны разработчика указать firefox не использовать это чёртово кеширование на странице?
Отсутствует
У поисковиков отпуск что ли?
https://www.google.ru/search?q=запретит … 8&oe=utf-8
Отредактировано littleleshy (30-07-2012 17:24:20)
Отсутствует
У поисковиков отпуск что ли?
https://www.google.ru/search?q=запретит … 8&oe=utf-8
У вашей головы отпуск? Я говорю о "кешировании СОДЕРЖИМОГО веб-страниц", которо есть ТОЛЬКО у firefox и НИКАКИМ образом не отключается! Никакого отношения к традиционному кешированию страниц браузером это не имеет, это пакостная "фича" есть только у firefox, она кеширует состояния объектов html страницы, что нарушает работу js скриптов, поскольку они получают неожиданные данные (с прошлых визитов страницы).
Как это устранить, со стороны страницы (разработчика)?
Отредактировано CrazyPHP (01-08-2012 14:16:09)
Отсутствует
Приведите пример кода, который, как Вы считаете, работает неправильно.
ПРИМЕР
Имеем html страницу:
<!DOCTYPE html> <html lang="ru"> <head> <meta charset="windows-1251" /> <title>Firefox sucks</title> <script type="text/javascript" src="http://code.jquery.com/jquery-latest.min.js"></script> </head> <body> <script> $(document).ready(function(){ //$("#rad_1").prop("disabled",true); }); </script> <input type="radio" name="radio_group" id="rad_1" value="1" checked="" /> - radio 1 <br /> <input type="radio" name="radio_group" id="rad_2" value="2" /> - radio 2 <br /> <input type="radio" name="radio_group" id="rad_3" value="3" /> - radio 3 <br /> <input type="radio" name="radio_group" id="rad_4" value="4" /> - radio 4 <br /> </body> </html>
Эксперимент №1:
1. Просто нажимаем на любой радио баттон.
2. Нажимаем F5.
3. Видим что остался выбранным именно тот радио баттон, что мы нажали в пункте №1. ХОТЯ в html коде есть явное указание на то, какой элемент должен быть выбран!
Отсюда и все беды, демонстируемые в эксперименте №2:
Эксперимент №2:
1. Раскоментирйте строку в блоке <script>.
2. Обновите страницу, элемент rad_1, окажется выключенным.
3. Измените в блоке <script> "rad_1" на "rad_2".
4. Обновите страницу.
5. Оба элемента, как "rad_1" так и "rad_2" оказались выключенными, хотя в коде в данный момент отстутсвует скрипт выключающий "rad_1".
Вот вам и ошибка в работе скриптов. Т.е. если бы я стал проверять значения "disabled" этих элементов, то они были бы равны не тем значениям каким должны быть равны, и всё из-за кеширования состояний элементов на странице.
В других браузерах такого бреда нет.
Так вот вопрос как отключить это кеширование?
Отсутствует
F5 достает страницу из кеша - источник страницы значения не имеет, диск это или сервер. Если хотите получить актуальную копию, нажимайте Ctrl + F5. А в реальном веб-приложении, применяют http-заголовки или теги-<meta http-equiv/>, управляющие кешированием (это не всегда запрет кеширования, можно, например, кешировать страницы на полчаса): Expires, Cache-Control, Pragma, Last-Modified.
Не стойте на месте - ищите новые тупики :)
Отсутствует
F5 достает страницу из кеша - источник страницы значения не имеет, диск это или сервер.
и так устроено во всех основных браузерах.
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
CrazyPHP
Если Вы такое поведение кэширования заметили у одного браузера, можно просто запретить кэширование. Те браузеры, которые не кэшируют, так и не будут кэшировать, а те, которые кэшировали - перестанут. Вот на что я хотел намекнуть.
Отсутствует
ru-vadik пишетF5 достает страницу из кеша - источник страницы значения не имеет, диск это или сервер.
и так устроено во всех основных браузерах.
так устроено ТОЛЬКО В FIREFOX, что является вовсе не предсказуемым поведением. F5 - является командой обновления в windows и пользователь всегда ожидает именно ОБНОВЛЕНИЯ данных, а не считывания из кеша.
Если хотите получить актуальную копию, нажимайте Ctrl + F5.
И что я теперь должен пользователям сайта использующим firefox объяснять как через три колена обновляется страница? Вместо стандартного и привычного F5? Неужели это забота разработчика сайта?
А в реальном веб-приложении, применяют http-заголовки или теги-<meta http-equiv/>
т.е. вместо того чтобы разработчики firefox убрали из браузера нестандартное поведение со своим уродским кешированием состояний элементов и неинтуитивными шоткеями, разработчик должен отключать кеширование своих страниц? Вам не кажется это глупым? Все остальные браузеры подчиняются стандарту, дабы всё было интуитивно, а mozilla решила выпендрется и нарушить работу сайтов, да ещё и запутать пользователся с особым обновлением страницы, которое вовсе не обновление.
Хватит это терпеть!
Отсутствует
CrazyPHP
Учите матчасть. Если Ваша по F5 обновляет страницу без использования кэша, то это не значит, что так делают все браузеры.
Отредактировано littleleshy (06-08-2012 02:59:40)
Отсутствует
Учите матчасть. Если Ваша по F5 обновляет страницу без использования кэша, то это не значит, что так делают все браузеры.
Эта мат.чать либо неактуальна либо намеренно кем то исправлена.
ВО ВСЕХ БРАУЗЕРАХ (Opera 12, IE9, Chrome 21) НА F5 СТРАНИЦА ОБНОВЛЯЕТСЯ! КРОМЕ FIREFOX.
Не верите? Попробуйте сами (есть пример выше).
и что вы мне вообще дали? это похоже внутренняя инструкция вики.
Отредактировано CrazyPHP (06-08-2012 03:43:32)
Отсутствует
ВО ВСЕХ БРАУЗЕРАХ (Opera 12, IE9, Chrome 21) НА F5 СТРАНИЦА ОБНОВЛЯЕТСЯ! КРОМЕ FIREFOX.
Не поленился и посмотрел. Основные браузеры:
IE | Chrome | Firefox
Посмотрите, что делает F5, а что делает Ctrl+F5.
У Opera вообще свой взгляд на это дело.
Ваши примеры прогнал в 14, в
9 и в
20. В первом примере поведение в
и
одинаковое (как Вы и описываете), на втором примере в
наблюдается описанное Вами поведение. В остальном всё происходит так, как Вы хотите.
По второму примеру. Следующий код более "надёжен":
$("#rad_1").prop("disabled",false); $("#rad_2").prop("disabled",true); $("#rad_3").prop("disabled",true); $("#rad_4").prop("disabled",false);
Такое, казалось бы, непривычное поведение браузера понять можно. Команда отключить кнопку была, а команды включить не было. Хоть мы и пытались неявно сообщить браузеру, обновляя страницу, что всё нужно вернуть на место, наш "намёк" не сработал.
Вывод
В данном случае включённость/выключенность нужно задавать 1) только с помощью скриптов и 2) сразу или по отдельности, но для всех кнопок.
Отредактировано littleleshy (06-08-2012 04:34:58)
Отсутствует
littleleshy
не корми.
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует
Мы уяснили, что уникальная функция "кеширование содержимомго веб-страниц", которая также кеширует состояния html элементов, да ещё и никаким образом не отключается в настройках, является сущим злом! По нажатию кнопки F5 во всех браузерах (даже если страница берётся из кеша) состояния элементов сбрасываются к дефолтным и яваскрипты выполняются заново, как это и должно быть. В то время как
присваивает элементам значения с прошлых визитов этой страницы, что препятствует нормальному выполнению яваскриптов.
Кончайте с этим бредом, отключите эту уродскую функцию.
Отредактировано CrazyPHP (06-08-2012 14:16:11)
Отсутствует
какая боль..какая боль...(с)
Кончайте с этим бредом, отключите эту уродскую функцию.
кричите громче! а еще лучше устройте бойкот ФФ!
я помню те времена когда обновления программ убирали проблемы и исправляли баги, а не добавляли их.
toxID:05AB9B827D896AACEE7FF4573A02FB8F025F46ADC856B98F65BC1BA9BD21A81DC98BA9C36CE3
Отсутствует