Элементы кэшируются или нет? - PullRequest
0 голосов
/ 28 мая 2009

Когда я проверяю с помощью Privoxy, что мой браузер загружает с одного сайта, кажется, что все элементы, которые составляют страницу (CSS, JS, иконки и т. Д.), Перезагружаются каждый раз, т.е. браузер не кэширует их (извините, новые пользователи не могут включать URL-адреса):

<html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <TITLE>My Site</TITLE>
    <meta name="keywords" lang="fr" content="whatever">
    <meta name="Description" lang="fr" content="whatever">

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
    <meta name="Category" content="Internet"> 
    <meta name="revisit-after" content="2 days">
    <meta name="author" content="webmaster@example.com">
    <meta name="identifier-URL" content="http://www.example.com">
    <meta name="robots" content="index, follow">
    <meta name="classification" content="Internet">
    <meta name="distribution" content="global">

    <meta name="geography" content="Paris">
    <meta name='language' content='fr'><meta http-equiv='content-language' content='fr'><meta name='rating' content='General'>

    <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    <link rel="alternate" type="application/rss+xml" title="My RSS" href="http://www.example.com/rss.php" />


    <link rel="shortcut icon" href="favicon.ico">
    <link rel="icon" href="animated_favicon1.gif" type="image/gif">

    <link rel="stylesheet" href="miseenforme.css" type="text/css">
    <link rel="stylesheet" href="css/screen2009.css" type="text/css">
    <!--[if lte IE 6]>
    <link rel="stylesheet" href="css/screen2009-ie6.css" type="text/css">
    <![endif]-->

    <style type="text/css">@import url(jscalendar-1.0/calendar-blue.css);</style>
    <script type="text/javascript" src="jscalendar-1.0/calendar.js"></script>

    <script type="text/javascript" src="jscalendar-1.0/lang/calendar-fr.js"></script>
    <script type="text/javascript" src="jscalendar-1.0/calendar-setup.js"></script>

    <script type="text/javascript" src="jquery-1.2.6.pack.js"></script>
    <script type="text/javascript" src="jquery.scrollTo-min.js"></script>
    <script type="text/javascript" src="jquery.autogrow.js"></script>
    <script type="text/javascript" src="fonctionsjs.js?maj=v1"></script>
</head>

На самом деле я не вижу никаких инструкций, связанных с кэшем, в этом HTML-заголовке.

Может ли кто-нибудь подтвердить, что браузеры (IE, Firefox, Chrome) ничего не кэшируют, если не указано в заголовке HTML?

Нужно ли настраивать браузеры, чтобы они принудительно кэшировали элементы?

Спасибо.

Ответы [ 5 ]

1 голос
/ 28 мая 2009

Краткая версия: не меняйте браузер, отправьте правильный HTTP-заголовок, связанный с кэшем * info.

Длинная версия: если вы явно не сообщаете браузеру, что и как кешировать, вы оставляете его свободным для выбора. Такие параметры настраиваются и сильно различаются от пользователя к пользователю и от браузера к браузеру, но обычно вы можете ожидать, что браузер будет активно кэшировать изображения, js и css, но не html (это очень грубый и только мой опыт). Тем не менее, не стоит полагаться на то, что браузеры решают эту проблему, если вам все равно нужно явно указать их, а также делать это с заголовками ответов, а не с метатегами, потому что метатеги просто не соблюдаются.

Укороченная версия длинной версии: кеширование сложное . Я советую вам google учебник для выбранной вами языковой платформы.


* не содержимое заголовка html, содержимое заголовка HTTP

1 голос
/ 28 мая 2009

Вы уверены, что они не кэшируются? Если ваш сервер не выводит заголовок элемента управления кэшем для статических элементов, браузер по-прежнему будет выдавать HTTP-запрос (с отметкой времени кэшированного файла) серверу для каждого элемента. Затем сервер должен ответить со статусом 304, без изменений. Таким образом, сам файл больше не передается, но этот запрос-ответ может быть именно тем, что вы видите в Privoxy.

Чтобы сохранить запросы, вам необходимо настроить сервер для установки заголовка управления кэшем. Однако обратите внимание, что изменения на вашем сервере могут затем не отразиться на клиенте, поэтому вы захотите переименовывать ваши CSS / статические файлы всякий раз, когда вы их изменяете, чтобы все клиенты использовали самую последнюю версию.

0 голосов
/ 29 мая 2009

Используйте YSlow , чтобы выяснить, что вы должны сделать, чтобы улучшить производительность загрузки страницы. Он также говорит вам, что вы должны сделать для максимального кэширования на стороне клиента (т.е. в браузере).

0 голосов
/ 28 мая 2009

Я думаю, что первое, что нужно проверить - отключено ли кэширование в вашем браузере?

AFAIK, браузеры кэшируют большинство элементов страницы, если настройка браузера или заголовок HTTP в ответе сервера не отключает это кэширование.

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

Вот превосходное руководство по теме Кэширование, которое помогает рассеять многие заблуждения о том, как именно работает кэширование в браузере.

0 голосов
/ 28 мая 2009

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

Вы можете установить некоторые элементы управления сервером. Если вы сообщите нам, на каком сервере вы работаете, вы получите лучший ответ ...

Наконец, вы можете посмотреть http://www.w3.org/Protocols/rfc2616/rfc2616-sec13.html и http://www.web -caching.com / mnot_tutorial / how.html для получения дополнительной информации.


На основании вашего ответа (я полагаю, это вы с новым именем ...) вы хотите посмотреть настройки Apache. Я никогда не использовал Apache, поэтому я не знаю, с чего начать ...

Вы также захотите посмотреть некоторые статьи, на которые я и другие ссылались. Это не совсем простая тема. Одна статья была связана с пару раз. (подсказка)

Не будучи программистом PHP, я не уверен на 100% в этом, но готов поспорить, что в PHP есть способ переопределить настройки заголовка кэша сервера. Может быть стоит посмотреть здесь или на php.net.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...