JQuery AJAX кэширование: ложно работает только в Firefox - PullRequest
1 голос
/ 22 июля 2010

Я разрабатываю простое наложение для предварительного просмотра изображения в полном размере.

Я использую «cache: false» для предотвращения кеширования.

Код прост:

$.ajax({
   url: urlFull,
   cache: false,
   success: function(html){
      // display image
   },
   error: function(XMLHttpRequest, textStatus, errorThrown ) {
      // display error
   }
});

Проблема в том, что когда файл изображения будет заменен другим, браузер всегда будет показывать старый, независимо от того, была установлена ​​опция «cache: false».

Эта проблема появляется в Safari 5.0 (6533.16) и Chrome 5.0.375.99.

В Firefox 3.6.3 он работает как положено (без кэширования)

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

Есть ли решение этой проблемы? Может быть, я могу перехватить ответ с сервера Rails и настроить некоторые заголовки? ... я разрабатывал под localhost.

Спасибо.

Ответы [ 2 ]

1 голос
/ 22 июля 2010

В качестве «грязного» решения попробуйте добавить метку времени в параметры URL GET.

0 голосов
/ 22 июля 2010

Я пытался использовать

data: { timestamp: new Date().getTime() }.

Не работает.

На панели разработчика Safari я обнаружил, что строка запроса выглядит следующим образом:

"http://path_to_the_image.png? _ = 1279789134612 ".

Я добавил параметр "_":

data: {_: new Date().getTime()}

и получил следующий URL:

"http://path_to_the_image.png = 1279789134612 & = 1279789245466 ".

Кроме того, я попытался использовать «timestamp», «tstamp», «t»; установка "0", "9999999999999" ... все не дает результата ...

Кажется, что я не могу контролировать метку времени, которая внутренне установлена ​​в $ .ajax ...

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