Секреты оптимизатора

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

    1) Заголовки Last-Modified и If-Modified-Since

    Для правильного индексирования поисковиками вашего сайта каждая страница должна выдавать заголовок Last-Modified и корректно обрабатывать запросы с условием If-Modified-Since. Если страница не менялась с указанного в запросе времени, сервер должен выдавать «HTTP/1.1 304 Not Modified.»

    Пример php-кода для самого просто случая, когда скрипт содержит все данные:

    header(«Last-Modified: ». gmdate(«D, d M Y H:i:s»,filemtime($_SERVER['SCRIPT_FILENAME']))." GMT");

    Вставить в начало каждой страницы.

    Добавлено: В других случаях, вместо «filemtime($_SERVER['SCRIPT_FILENAME'])» нужно подставить последнюю дату изменения данных, выводимых на этой странице.

    2) Gzip-сжатие

    Существенно сокращает время загрузки странички.

    Php-код, вставить первой строкой:

    ob_start('ob_gzhandler');

    3) Правильное кеширование картинок браузером

    Картинки должны кешироваться минимум на месяц. Для HTTP-запроса картинки должен выдаваться заголовок вида «Cache-Control: max-age=999999»
    Для этого нужно вставить

    ExpiresActive On
    ExpiresByType image/gif «access plus 3 month»
    ExpiresByType image/jpeg «access plus 3 month»

    в .htaccess в корне сайта.

    Для тех, у кого не загружен модуль, добавить

    LoadModule expires_module libexec/mod_expires.so
    AddModule mod_expires.c

    в начало.

    4) Исправление проблемы с «Options +MultiViews»

    Для тех, кто использует «Options +MultiViews» — возможны проблемы с поисковиками. С настройками «по умолчанию» в Apache у него возникают проблемы с выбором файла (php-скрипты не имеют mime-type). Для лечения этой проблемы вставьте

    AddType text/html php

    в .htaccess в корне сайта.

    5) Зеркала

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

    User-Agent: *
    Host: www.сайт.ru

    в robots.txt в корне сайта.

    6) Хосты www.сайт.ru и сайт.ru

    По адресу сайт.ru должен выдаваться заголовок «HTTP/1.1 301 Moved Permanently». Будет, например, правильный подсчёт ТИЦ.

    7) Добавьте своё :-)
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 28

      +3
      И чего б вам не писать о том, чем занимаетесь, а не нести пургу всякую? За такие советы и получить недолго от случайных последователей.
        –1
        Я думал, те 0,00001% общества, которым это интересно, оценят))) Посоветуйте-покритикуйте, я учту о чём написать в след раз. Это был первый.
          +1
          А, то есть это вы впервые решили что-то написать и решили, что содержание не имеет значение?
          Так вот, мне кажется, что при реализации ваших "советов" первый раз сайт отдаст исходный код index.php - поскольку вы запретили Апачу его парсить, - а потом посетитель всегда получит 304 - поскольку дата модификации файла скрипта не имеет ничего общего с изменением данных, которые он выводит.
          Почему бы вам не изучить то, про что советуете?
            –1
            "А, то есть это вы впервые решили что-то написать и решили, что содержание не имеет значение?" - написать о том, что должно быть интересно.

            Про "дата модификации файла скрипта не имеет ничего общего с изменением данных" согласен, надо приписать, что это для самых тривиальных случаев. Про "первый раз сайт отдаст исходный код index.php" - не согласен, проверено годами. Все пашет.
              –1
              А, впрочем, что это я? Мне по идее должны быть выгодны такие советчики на других ресурсах - тем больше народу придет на мой решать проблемы со следованием чужим советам.
                0
                Благодарю за критику. Как и обещал, учту.
              0
              У правильных администраторов php парсится вот так:
              AddHandler application/x-httpd-php .php
          +2
          Маленькое замечание:

          "header("Last-Modified: " . gmdate("D, d M Y H:i:s",filemtime($_SERVER['SCRIPT_FILENAME']))." GMT");"

          На сколько я понимаю, эта строка выдаст дату последнего изменения файла.

          А вот если контент там динамический, и данные вытаскиваются из базы, то нужно вставлять не filemtime(файл), а дату последней записи из базы, показанной на этой странице.

          А вообще интересно, спасибо.

          Занёс в избранное.
            0
            Да, спасибо, мы уж тут вчера увидели... Я впишу в сатью.
              0
              А как это сделать, как вывести дату последней записи из базы?
              0
              >По адресу сайт.ru должен выдаваться заголовок ...
              а ничего, что домен сайт.ru немного выше в иерархии, чем www.сайт.ru??? если уж пошла такая пьянка, логичнее как раз наоборот делать.
                0
                На самом деле иерархия не важна. Как писать, с www или без — это выбирается оптимизатором.
                0
                Насчет "с www" или "без www" вроде бы надо в robots.txt писать, а в .htaccess'e правильный редирект ставить?
                Поясните, пожалуйста, как ставить заголовок (по 6 пункту)?
                  0
                  Поясняю. Выбираете, какой адрес будет основным. Пусть, например, будет www.сайт.ru.

                  robots.txt:
                  User-Agent: *
                  Disallow: /js
                  Disallow: /css
                  Host: www.сайт.ru

                  Редирект я реализую на php, можно через .htaccess, пример для php:
                  if ($_SERVER['HTTP_HOST']=='сайт.ru')
                  {
                  header('HTTP/1.1 301 Moved Permanently');
                  header('Location: http://www.сайт.ru'.$_SERVER['REQUEST_URI']);
                  die('Сайт переехал');
                  }
                    0
                    User-Agent: *
                    Host: www.сайт.ru

                    Директиву Host: обрабатывает только яндексовый робот.
                      0
                      .htaccess
                      RewriteEngine on
                      RewriteBase /
                      RewriteRule ^(.*)$ http://www.somesite.ru/$1
                        0
                        Так можно редиректить и зеркала.
                    0
                    > Если у вашего сайта есть зеркало, для избежания возможного бана в
                    > поисковиках вставьте...

                    Боже мой, да какой бан? Это автоматически
                      0
                      Нечаянно отправилось. Дописываю: это автоматический выбор главного зеркала сайта роботом-зеркальщиком. При этом в индексе остается одно из зеркал. Баном это назвать нельзя.

                      Насчет 301 редиректа на основное зеркало - не обязательно. Достаточно директивы хост, если объектом поисковых посягательств является Яндекс.
                        0
                        Спасибо) Понял. В следующий раз напишу о том, чем я занимаюсь а не о хрени)))
                      0
                      Gzip-сжатие
                      "Зажимание" контента увеличивает нагрузку на сервер, особенно, если используется максимальная компрессия
                      ob_start(array('ob_gzhandler',9));
                      При современной пропускной способности каналов связи (классически являющейся самым узким местом при передаче данных) вообще не стоит затевать что-то со сжатием (особенно на виртуальном хостинге, который дает вам махонький "клочок" процессора).

                      - Все так плохо?
                      - Кэшируйте сжатые данные.
                        0
                        интересно, спасибо!
                        особенно ob_start(array('ob_gzhandler',9));
                          0
                          На эту тему попалась ссылка про mod_deflate для Apache 2.0.
                          Во-первых, есть возможность выбора mime-типов, которые вы хотите отдавать сжатыми. Во-вторых, в теории работает быстрей, чем если бы это делалось php.
                        0
                        А для чего должно быть обязательно включено ExpiresByType для картинок?
                        (В контексте поисковой оптимизации)
                          0
                          Лишь снижает нагрузку на сервер
                          +1
                          Открою Вам самый главный секрет оптимизации сайтов, говорю, как человек с достаточным опытом в этой сфере. Итак, главный секрет: нужно делать хорошие, качественные сайты, с хорошим контентом, сайты интересные для целевой аудитории.
                            0
                            ^) +1 к карме
                            +1
                            По поводу сжатия.
                            Если мы говорим о php, то лучше (быстрее) использовать следующие команды:

                            php_flag zlib.output_compression On
                            php_value zlib.output_compression_level желаемый_уровень

                            в httpd.conf.

                            Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                            Самое читаемое