Какао - Предотвратить кеширование Javascript в WebKit - ошибка Safari Beta 4? - PullRequest
4 голосов
/ 23 мая 2009

У меня есть приложение Какао, содержащее WebView. Я нацелился на 10.4 SDK из-за установленной клиентской базы приложения. (т.е. я не могу требовать леопарда.)

У меня есть два файла: index.html и data.js.

Во время выполнения, в ответ на пользовательский ввод, я часто пишу в файл data.js, заполняя его текущими данными из приложения.

(Файл data.js используется файлом index.html при загрузке тела для заполнения таблиц в пределах index.html. Сам индекс.html не изменяется.)

Чтобы (якобы) предотвратить кэширование моих часто меняющихся данных в WebKit, я звоню:

NSURLRequest *urlRequest = [NSURLRequest requestWithURL:indexFileURL cachePolicy: NSURLRequestReloadIgnoringCacheData timeoutInterval:10];

и

[[myWebView mainFrame] loadRequest: urlRequest];

Это очень хорошо работает у тигров и леопардов.

Однако в Leopard произойдет сбой, если установлена ​​Safari Beta 4. Рисунок файла index.html в веб-представлении не учитывает текущие изменения в файле data.js. Похоже, что файл javascript (data.js) фактически кэшируется, независимо от политики кэширования URL.

В качестве обходного пути я попытался вызвать [[myWebView mainFrame] reload] после loadRequest, но это вызывает другие проблемы. (Веб-представление вообще не обновляется.)

Может кто-нибудь предложить способ исправить или обойти это поведение? Спасибо.

Ответы [ 2 ]

4 голосов
/ 23 мая 2009

Не решение, а обходной путь, который может сработать:

Попробуйте добавить что-то вроде "? Version = some_random_number" к вашему URL, с новым случайным числом при каждой перезагрузке. По моему опыту, это довольно эффективно заставляет webkit перезагружаться.

2 голосов
/ 18 июня 2009

[просто закрываю это]

Javascript по-прежнему кэшируется в финальной версии Safari 4 независимо от флагов кэша. Разочаровывает, особенно учитывая, что это известная проблема. Я сильно подозреваю, что потребности в маркетинговых точках и результатах тестов в войнах браузеров превзошли потребность в правильно работающем коде.

Тем не менее, обходные пути (см. Комментарии ниже) работают.

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