Кэшируются ли целые веб-сайты автоматически (Google использует ‹style›)?

Я слышал, что таблицы стилей кэшируются, но кэшируются ли обычные страницы (например, та, на которой мы находимся)? Я заметил, что на более поздних веб-сайтах, созданных Google, они даже не используют таблицы стилей, а просто тег <style> с одной сжатой строкой CSS. Это навело меня на мысль, что кэшируется вся страница (включая <style>), а не только таблицы стилей. Я прав в этом? Почему Google не использует таблицы стилей и не хочет, чтобы их CSS кэшировался, когда их сайты просматриваются миллиарды раз в месяц?

Насколько я понимаю, все, что появляется в «Сетевой панели» элемента проверки Chrome, кэшируется?

Я исследовал «кэширование PHP», но, похоже, это для include, поэтому я предполагаю, что страницы уже кэшируются автоматически.


person Community    schedule 09.09.2012    source источник
comment
Вам нужно узнать о заголовках кэширования HTTP.   -  person SLaks    schedule 09.09.2012
comment
Взгляните на Nginx.   -  person Arthur Halma    schedule 09.09.2012
comment
Google далеко ушел от проблемы кэширования своих файлов. Они даже не будут использовать HTTP, если вы используете их браузер и/или ОС (они могут использовать SPDY). Они проводят сотни A/B-тестирований одновременно. Обслуживание зарегистрированных пользователей для десятков сервисов по всему миру. Для любого из нас это было бы чрезмерной оптимизацией. Не пытайтесь имитировать одну функцию, которую вы видели на одном из их сайтов, вероятно, есть десятки факторов, которые приводят их к ее использованию, которые мы игнорируем, и многолетний опыт. Google Page Speed ​​и YSlow! достаточно для большинства проектов. Затем вы можете прочитать, что пишут на эту тему Стив Содерс и другие.   -  person FelipeAls    schedule 10.09.2012
comment
@FelipeAls спасибо, я не буду, мне просто было любопытно узнать об их странных методах на их сайтах :)   -  person    schedule 10.09.2012


Ответы (2)


Прочтите этот пост: РУКОВОДСТВО ПО КЭШИРОВАНИЮ.

Используйте тег <META HTTP-EQUIV="CACHE-CONTROL" CONTENT="NO-CACHE"> в разделе <head/>. Используйте заголовки в своем PHP-коде:

<?php
 Header("Cache-Control: must-revalidate");
 $offset = 60 * 60 * 24 * 3;
 $ExpStr = "Expires: " . gmdate("D, d M Y H:i:s", time() + $offset) . " GMT";
 Header($ExpStr);
?>
person Arthur Halma    schedule 09.09.2012
comment
Ах я вижу. Я всегда использовал no-cache для разработки. Почему бы Google не использовать таблицу стилей на всех своих веб-сайтах? - person ; 09.09.2012
comment
@ArthurHamla: Не могли бы вы обобщить важное содержание этой ссылки? - person Blender; 09.09.2012
comment
Google кэширует целые страницы, используя что-то вроде сервера Nginx. Также у них есть CDN-серверы и т. д. Вы можете передать заголовки (используя свой веб-сервер), чтобы попросить пользователя-клиент сделать локальный кеш вашей страницы на некоторое время. Или вы можете поместить соответствующий метатег в свою HTML-разметку. Есть много возможных методов сделать это. - person Arthur Halma; 09.09.2012
comment
@ Adam184 Google, вероятно, использует таблицу стилей на нескольких веб-сайтах, но они решили, что некоторые из них встраивают ее, чтобы уменьшить количество запросов и ускорить загрузку страницы. - person Andy Davies; 12.09.2012
comment
@AndyDavies Спасибо :) Некоторые методы Google кажутся нестандартными, например, около месяца назад их главная страница поиска Google использовала три «таблицы» для одной панели поиска. Я не уверен, пытались ли они быть озорными или на самом деле есть причина, лол. А на некоторых страницах все ‹head› помещают в тег ‹body›… но я решил… кого это волнует?!?! ржунимагу - person ; 13.09.2012
comment
Они постоянно проводят эксперименты. Оптимизация, которая работает для них и других крупных сайтов, может, конечно, не работать для всех остальных. - person Andy Davies; 13.09.2012

Кэширование касается ресурсов, соответствующих отдельным URL-адресам, а не сайтов. По сути, ресурсы всех видов, такие как HTML-документы, изображения, таблицы стилей, код JavaScript, простые тексты и т. д., могут кэшироваться. Таким образом, сайт как объект не кэшируется, равно как и «целая страница» (HTML-документ + используемые в нем изображения + таблицы стилей, на которые он ссылается +...). Но каждый компонент может кэшироваться под своим собственным URL.

Google использует встроенные элементы style для некоторых очень коротких таблиц стилей, вероятно, потому, что они считают это более эффективным, чем использование внешнего файла CSS. HTML-документ вполне может быть кэширован, но даже если это не так, их подход немного быстрее, чем использование внешней таблицы стилей, что может вызвать накладные расходы HTTP.

Но для любого нетривиального кода CSS, который вы используете на разных страницах вашего сайта, внешний файл CSS более эффективен. Он будет загружен (с небольшим объемом HTTP-заголовков), когда пользователь впервые зайдет на ваш сайт, но когда он перемещается по нему, браузер будет иметь код CSS в своем собственном кеше.

person Jukka K. Korpela    schedule 09.09.2012