Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Большой JS файл. Кэш IE6. (https://javascript.ru/forum/misc/2244-bolshojj-js-fajjl-kehsh-ie6.html)

deadpsh 26.11.2008 16:08

Большой JS файл. Кэш IE6.
 
Предыстория:
Есть относительно большой внешний js скрипт с описанием "классов" ~ 10000 строк. На самой странице создаются объекты из этого файла. Файл выложить не могу, комерческая тайна))) Структура приложения - слева фрейс меню, справа контент (аля MSDN). Внешний JS прицепляется к фрейму с контентом.

Проблема:
С недавнего времени стала появляться ошибка в IE о том, что "ожидается объект" (который описан во внешней js-ке). Оказалось что не всегда загружается этот внешний файл. Причем происходит это 2 раза из 5. Т.е. 3 раза все хорошо, 2 раза ошибка.

Методом проб и ошибок оказалось, что если открыть страницу не во фрейме, а в отдельном окне и перегрузить кэш ctrl + F5 все заработает. Причем будет работать только в этом окне.. Если открыть заново, надо опять перегружать кэш...Проверял на 5-ти независимых машинах с IE6 у каждого ошибка воспроизводится но по-разному. У кого-то просто не работает. У кого-то открывается через раз...

Так что же все таки происходит?

P.S. "Отключить" кэш не предлагать...

no_alex 26.11.2008 23:38

У Вас этот файл
Цитата:

js скрипт с описанием "классов" ~ 10000 строк
генерируется динамически? Т.е. он каждый раз содержит разную информацию? Вы уверены что виноват именно кэш? Может Вы просто начинаете обрабатывать данные, которые еще не полностью сформированы?

Если проблема только в кэше, то такого рода проблемы решаются довольно легко - В URL файла добавляете GET-параметр, который будет все время меняться. И совершенно не важно, что этот параметр нигде не будет использоваться, но он не позволит браузеру кэшировать информацию.

Добавление такого GET-параметра, можно сделать либо при помощи "Серверного языка", либо при помощи того же JavaScript.

Например, на PHP это будет выглядеть примерно так:
<script type="text/javascript" src="javascript/data.js?rnd=<?=microtime(true)?>"></script>


Часовой пояс GMT +3, время: 03:26.