Загрузка изображения несколько раз, это ошибка Firefox или NivoSlider?

#jquery #firefox #firebug #firefox4 #nivo-slider

#jquery #firefox #firebug #firefox4 #nivo-слайдер

Вопрос:

Когда я открываю две вкладки с Nivo Slider в каждой, я заметил, что вкладка firebug net отображает несколько запросов на одно и то же изображение при каждом изменении слайда. Это увеличивает размер (в мб) страницы и использование / выделение памяти для firefox.exe. Через некоторое время мой компьютер стал очень медленным, а выделение памяти в task monitor превысило 1 ГБ.

Как это повторить: 1- Открыть http://nivo.dev7studios.com на 2 вкладках в firefox (протестировано в версиях 3.6 ~ 5.0) 2- Откройте сетевую панель firebug на второй вкладке 3- перезагрузите вторую вкладку

вот доказательство

Комментарии:

1. Трудно сказать, чья это ошибка, не понимая, почему Firefox снова выполняет эти запросы вместо использования кэшированной версии. Журнал за developer.mozilla.org/en/HTTP_Logging ответил бы на этот вопрос (по крайней мере, для кого-то, знакомого с внутренними компонентами necko)

Ответ №1:

Я только что протестировал в FF 3.6 — та же проблема.

Посмотрите на файл http://nivo.dev7studios.com/scripts/nivo-slider/jquery.nivo.slider.js : 84

 //Set first background
slider.css('background','url("'  vars.currentImage.attr('src')  '") no-repeat');
  

Также строки 253, 262, 284 и т.д. Он добавляет фоновое изображение «на лету», поэтому браузер должен запрашивать его снова и снова. К счастью, сервер отвечает заголовком 304, который не изменен.

Ответ таков: NivoSlider.

Комментарии:

1. но это не происходит в Google Chrome и в Firefox при открытии только одной вкладки

2. Действительно… Хорошо, чем я не знаю.

Ответ №2:

Я получаю утечки памяти в FF 4.0.1 при открытии одной вкладки. Chrome (12.0.742.100) тоже, хотя и не такой плохой, как FF.

Похоже, что NivoSlider вызывает эту утечку.

Ответ №3:

Мы тестировали это у меня на работе, и сначала мы увидели, что Firefox повторно загружает изображения, как и говорилось на оригинальном плакате. Но потом мы кое-что поняли — если вы никогда не наведете курсор на изображения с помощью инструмента Firefox / Firebug, он никогда не загрузит изображения заново!

Другими словами, похоже, что это происходит не из-за слайдера. Похоже, это происходит только тогда, когда вы начинаете расследование с использованием Firefox / Firebug.

Так что я не думаю, что это проблема.

Комментарии:

1. но firefox продолжает выделять память для этого

Ответ №4:

У меня такая же проблема с утечками памяти. Похоже, что nivo в конце концов не так уж и хорош.

После некоторых попыток мне удалось значительно снизить нагрузку, по крайней мере, согласно firebug.

Я сделал две вещи:

  • поместите display: none для всех изображений слайдера в css — я не думаю, что это действительно много значит, но это не повредит. Я надеялся, что это подавит начальную загрузку.
  • в JS используйте $(document).готово вместо $ (window).load- теоретически это должно запустить слайдер до загрузки всех изображений

Проблема все еще не полностью устранена, я получаю какое-то странное поведение. У меня всего 4 изображения. Все они загружаются при запуске. В какой-то момент (я не знаю причину, обычно при первом отображении изображения) 2 изображения загружаются снова (из кэша). После этого все работает нормально. Я оставил его открытым на час, никаких новых загрузок.

Итак, в заключение, с упомянутыми изменениями я получаю 2 дополнительных загрузки. По сравнению с тем, что у меня было раньше (новая загрузка при изменении изображения), это не так уж плохо.

Я все еще не могу найти причину или объяснение такого поведения. Возможно, firefox освобождает часть памяти по пути, поэтому изображения время от времени загружаются снова?