новое изображение делает HTTP-запрос, хотя кешируется? - PullRequest
0 голосов
/ 13 мая 2010

У меня есть слайд-шоу JavaScript, которое динамически создает следующий слайд, а затем перемещает его в поле зрения. Так как изображения на самом деле являются спрайтами, src is transparent.png и фактическое изображение отображается с помощью background:url( .. в css.

Каждый раз (ну, в большинстве случаев) скрипт создает new Element, Firefox отправляет http-запрос на transparent.png. У меня есть заголовок expires в далеком будущем, и Firefox уважает срок действия всех остальных файлов.

Есть ли способ избежать этих ненужных запросов. Даже если сервер возвращает 304 unmodified ответов, было бы неплохо, если бы Firefox учитывал истечение срока действия для динамически создаваемых изображений.

Я подозреваю, что если бы я вставил простую строку вместо new Element, это могло бы решить проблему, но я использую некоторые методы для прототипа расширенного объекта Element, поэтому я хотел бы избежать набора строк html в мой файл js.

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

Спасибо.

@ TJ Crowder Вот два изображения: http://tinypic.com/r/29kon45/5. Первое показывает, что запросы на trans.png растут. Второй показывает пример заголовков. Спасибо

@ all Просто повторюсь: что действительно странно, так это то, что он делает эти ненужные запросы только наполовину, даже если все изображения создаются с помощью идентичной логики.

Ответы [ 2 ]

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

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

EDIT

Согласно объяснению на этом сайте , Firefox не игнорирует ваше время кеширования. Если срок действия изображения истек, то браузер должен просто запросить изображение снова. Если время не истекло, что происходит в этом случае, браузер должен выдать условный запрос GET. Я не думаю, что вы можете уйти от этого.

Я думаю, что Firefox отправляет запросы только половину времени, потому что он только что получил статус «304 Не изменен» для изображения по предыдущему запросу и хочет доверять этому для последующих запросов, если они происходят достаточно быстро.

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

Это проблема кеширования. Существует несколько способов управления кэшированием браузера путем изменения заголовков ответа , добавляемых вашим веб-сервером. Я обычно использую комбинацию ETag и Expires

Если в заголовках ответа есть противоречивые или неполные инструкции кэширования, некоторые браузеры могут просто игнорировать их и получать последнюю версию ресурса.

...