Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 26.11.2008, 16:08
Новичок на форуме
Отправить личное сообщение для deadpsh Посмотреть профиль Найти все сообщения от deadpsh
 
Регистрация: 26.11.2008
Сообщений: 1

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

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

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

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

P.S. "Отключить" кэш не предлагать...
Ответить с цитированием
  #2 (permalink)  
Старый 26.11.2008, 23:38
Аспирант
Отправить личное сообщение для no_alex Посмотреть профиль Найти все сообщения от no_alex
 
Регистрация: 20.08.2008
Сообщений: 56

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

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

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

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

Последний раз редактировалось no_alex, 26.11.2008 в 23:40.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как защитить файл js от скачивания с сервера? slon Общие вопросы Javascript 2 02.07.2008 01:14