Как мне остановить кэширование файлов js в IE? - PullRequest
2 голосов
/ 28 мая 2010

Я создал страницу, которая использует CKEditor элемент управления rich javascript edit.

Это довольно аккуратный элемент управления, особенно учитывая, что он бесплатный, но у меня серьезные проблемы с тем, как он позволяет добавлять шаблоны.

Чтобы добавить шаблон, вам нужно изменить js-файл шаблонов в папке шаблонов CKEditor. Страница документации, описывающая это, здесь .

Это работает нормально, пока я не захочу обновить шаблон или добавить новый (или все, что требует от меня изменения файла js).

Internet Explorer кэширует файл js и не забирает обновление. Очистка кэша позволяет получить обновление, но это неприемлемое решение. Всякий раз, когда я обновляю шаблон, я не хочу просить всех пользователей в организации очистить их кеш IE. Должен быть лучший способ!

Есть ли способ остановить кеширование IE файла js? Или есть другое решение этой проблемы?

Обновление

Хорошо, я нашел этот раздел в CKEditor API, который позволит мне использовать решение «вставить метку времени в URL», предложенное несколькими людьми.

Итак, скрипт теперь выглядит так:

config.templates_files =
[
    '/editor_templates/site_default.js?time=' + utcTimeMilliseconds
];

Спасибо за вашу помощь, ребята.

Ответы [ 7 ]

2 голосов
/ 28 мая 2010

Вы можете добавить rand seed в ваш файл js. Я имею в виду <script src='jsFile.js?seed=12345'
И каждый раз, когда вы хотите очистить кеш - меняйте начальный номер

Обновление:

как я понял ты должен написать так config.templates_files = [ '/mytemplates.js?seed=12345' ];

1 голос
/ 28 мая 2010

Боюсь, вам придется взломать код FCKEditor и заставить клиентский JavaScript загружать свежую копию файла XML. Вы можете сделать это, добавив ?random=<a random number> к URL запрашиваемого XML-файла. FCKEditor является открытым исходным кодом, поэтому вы должны быть в состоянии найти строки в запросе XML и соответственно изменить.

1 голос
/ 28 мая 2010

Youo может добавить параметр запроса метки времени, когда вы включаете ваш файл .js.

так что вместо <script type="text/javascript" src="somefile.js"></script> вы можете <script type="text/javascript" src="somefile.js?timestampgoeshere"></script>

это должно привести к тому, что файл всегда будет перезагружаться ( отметка времени должна быть динамической и изменяющейся для каждой загрузки страницы .. )

0 голосов
/ 28 мая 2010

Несколько методов (не нужно делать их все):

  1. нажмите ^ F5 (control + F5) - загрузится без кеша
  2. установить заголовки прагмы / кэша при отправке
  3. использовать случайную величину в строке запроса GET
0 голосов
/ 28 мая 2010

каждый раз, когда вы загружаете файл js, передайте переменную случайного числа в качестве переменной.

src='/libs/js/myfile.js?4859487594573

Тот же трюк для файлов, загруженных ajax.

0 голосов
/ 28 мая 2010

Установите Expires-Header соответственно, например, в апаче

ExpiresActive On
ExpiresByType text/javascript access

Это не рекомендуется для реального веб-приложения, только для сценариев интрасети, поскольку файлы не будут кэшироваться.

0 голосов
/ 28 мая 2010

.NET / C #:

public static void DisallowBrowserCache( )
{
    HttpContext.Current.Response.Cache.SetCacheability(HttpCacheability.NoCache);
    HttpContext.Current.Response.Cache.SetAllowResponseInBrowserHistory(false);
}

Вы можете заставить ASP.NET записывать файл js в выходной поток (http://server.com/jsFile.aspx, установить заголовки http) и контролировать поведение кэширования ответас помощью вышеуказанного метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...