Я использую плагин Google Page Speed для Firefox для доступа к моему веб-сайту.
Некоторые компоненты на моей странице обозначены как статус HTTP:
200 200 (кеш) 304
По Google "Скорость страницы".
Что меня смущает, так это разница между 200 (кеш) и 304.
Я обновлял страницу несколько раз (но не очищал кэш), и всегда кажется, что мой favicon.ico и несколько изображений имеют статус 200 (кэш), в то время как некоторые другие изображения имеют статус HTTP 304.
Я не понимаю, почему разница.
ОБНОВЛЕНИЕ :
Используя Google «Page Speed», я получаю «200 (кеш)» для http://example.com/favicon.ico, а также http://cdn.example.com/js/ga.js
Но я получаю http статус «304» для http://cdn.example.com/js/combined.min.js
Я не понимаю, почему у меня есть два JavaScript-файла, расположенных в одной директории / js /, один возвращает HTTP-статус 304, а другой возвращает 200 (кэш) код состояния.
max-age
иage
могут также привести к 200 (кэш) результатам, еслиage
меньшеmax-age
. Единственное исключение - когда пользователь нажимает кнопку обновления браузера, и в этом случае отправляется заголовок 304.href
,url,
иsrc
ссылки на каждый файл , чтобы включить «отпечаток пальца» (либо хэш файла или простой порядковым номером), а затем сообщить серверу снять этот отпечаток и просто служитьstyle.css
или что-то еще. Если вы не можете сделать это на сервере, попросите систему сборки переименовать реальные файлы с помощью отпечатка пальца.200 (кеш) означает, что Firefox просто использует локально кэшированную версию. Это самый быстрый способ, поскольку к веб-серверу не обращаются.
304 означает, что Firefox отправляет условный запрос «If-Modified-Since» на веб-сервер. Если файл не обновлялся с даты, отправленной браузером, веб-сервер возвращает ответ 304, который, по сути, указывает Firefox использовать его кэшированную версию. Это не так быстро, как 200 (кэш), потому что запрос все еще отправляется на веб-сервер, но сервер не должен отправлять содержимое файла.
На ваш последний вопрос, я не знаю, почему два файла JavaScript в одном каталоге дают разные результаты.
источник
Это бросило меня на долгое время тоже. Первое, что я хотел бы проверить, это то, что вы не перезагружаете страницу, нажимая кнопку обновления, которая всегда выдаст условный запрос ресурсов и вернет 304 для многих элементов страницы. Вместо этого перейдите к строке URL, выберите страницу и нажмите Enter, как будто вы только что ввели тот же URL, что даст вам лучший индикатор того, что кэшируется правильно. Эта статья прекрасно объясняет разницу между условными и безусловными запросами и то, как кнопка обновления влияет на них: http://blogs.msdn.com/b/ieinternals/archive/2010/07/08/technical-information-about- условные-HTTP-запросы-и-обновления-button.aspx-
источник
HTTP 304 "не изменен". Ваш веб-сервер в основном сообщает браузеру: «Этот файл не изменился с момента последнего запроса». Принимая во внимание, что HTTP 200 сообщает браузеру «вот успешный ответ», который должен быть возвращен, когда ваш браузер обращается к файлу в первый раз или при обращении к измененной копии.
Для получения дополнительной информации о кодах состояния посетите http://en.wikipedia.org/wiki/List_of_HTTP_status_codes .
источник
На ваш последний вопрос, почему? Я постараюсь объяснить, что я знаю
Краткое объяснение этих трех кодов состояния в терминах непрофессионала.
Если на сервере включено кеширование
Для некоторых файлов браузер решает запросить с сервера, а для некоторых - для чтения из сохраненных (кэшированных) файлов. Почему это ? Каждый файл имеет срок годности, поэтому
Если срок действия файла не истек, то браузер будет использовать из кеша (200 кеш).
Если срок действия файла истек, браузер запрашивает файл у сервера. Файл проверки сервера в обоих местах (браузер и сервер). Если тот же файл найден, сервер отклоняет запрос. Согласно протоколу браузер использует существующий файл.
посмотрите на эту конфигурацию nginx
Здесь истекает 60 секунд, поэтому все статические файлы кэшируются в течение 60 секунд. Таким образом, если вы запросите файл снова в течение 60 секунд, браузер будет читать из памяти (200 памяти). Если вы запросите через 60 секунд, браузер запросит сервер (304).
Я предполагал, что файл не будет изменен через 60 секунд, в этом случае вы получите 200 (т.е. обновленный файл будет загружен с сервера).
Таким образом, если серверы настроены с разными заголовками (политиками) с истекающим сроком действия и кэшированием, состояние может отличаться.
В вашем случае вы используете cdn, основное назначение cdn - это высокая доступность и быстрая доставка. Поэтому они используют несколько серверов. Даже если кажется, что файлы находятся в одном каталоге, cdn может использовать несколько серверов для предоставления контента, если эти серверы имеют разные конфигурации. Тогда эти статусы могут измениться. Надеюсь, поможет.
источник