Быстрый эксперимент с инспектором Chrome показывает, что это происходит только при перезагрузке страницы, а не при нормальной загрузке.Chrome просто пытается обновить кеш.Подумайте об этом - если вы установите Expires
и Max-Age
на несколько десятилетий, вы просите браузер кэшировать этот ресурс и никогда проверять, обновляется ли он?Когда это возможно, он кэширует ресурс, но когда необходимо обновить страницу, он хочет убедиться, что вся страница обновлена.Конечно, другие браузеры тоже это делают (хотя в некоторых есть опция, позволяющая определить количество часов ожидания перед обновлением).
Благодаря современным браузерам и серверам обновление большого количества значков не будет таким медленным, как вы.Мысли - запросы передаются по конвейеру, чтобы устранить множественные задержки в оба конца, и вся цель заголовка If-Modified-Since
состоит в том, чтобы позволить серверу сравнивать метки времени и возвращать код состояния «Не изменен».Это будет происходить для каждого ресурса, который необходим странице, но браузер сможет сразу выполнить все запросы и убедиться, что ни один из них не изменился.
При этом есть несколько вещей, которые вы можете сделать, чтобысделать это проще:
В инспекторе Chrome откройте вкладку ресурсов, чтобы узнать, как они загружаются.Если заголовки запроса отсутствуют, ресурс загружался непосредственно из кеша.Если вы видите 304 Not Modified
, ресурс был обновлен, но его не нужно было загружать снова.Если вы видите 200 OK
, он был загружен снова.
В инспекторе Chrome перейдите на вкладку аудита, чтобы узнать, что он думает о кешируемости ваших ресурсов, на случай, если некоторые иззаголовки кэша не оптимальны.
Все эти If-Modified-Since
запросы и 304 ответа могут суммироваться, даже если они состоят только из заголовков.Объедините ваши изображения в спрайты, чтобы уменьшить количество запросов.