Ускоряем WordPress. Перенос изображений на поддомен

24.05.2011

speedup

Добрый день. Сегодня хочу продолжить серию статей о WordPress и рассказать, как перенести все изображения на поддомен. Эдакая небольшая инструкция по применению. Зачем это нужно, спросите вы? Для уменьшения нагрузки и распараллеливания загрузки сайта. Дело в том, что современные браузеры могут загружать страницу в несколько потоков, а поддомен выступает, своего рода, отдельным доменом. Поэтому скорость загрузки увеличивается и это хорошо Не секрет, что страницы, которые загружаются быстрее, при прочих равных — выше ранжируются поисковыми системами. Да и пользователям будет приятнее находиться у вас на сайте.

Я писал раньше об ускорении сайта в статье о технической оптимизации WordPress, а также советую почитать статью Евгения на эту же тему «Как я ускорял сайт». Это сподвигло меня на поиск нестандартных решений ускорения. Мало кто использует этот метод, так что он может считаться «джедайским»
Wordpress поддерживает хостинг изображений на других доменах без плясок с бубном, это замечательно. Несмотря на родную поддержку — я нечасто встречаю блоги с хостингом изображений на поддоменах. Владельцы или не хотят заморачиваться, или не в курсе этой возможности. Со второй проблемой я попробую сегодня помочь, с первой придется смириться, тут я бессилен Вся работа сводится к 4 шагам, начнем по порядку…

Создание поддомена вашего сайта

У меня на хостинге используется cPanel, поэтому скриншоты будут этой системы, она достаточно распространенная. У кого не выйдет сделать самостоятельно — можно обратиться в техподдержку, они помогут.

Заходим в управление доменами и создаем поддомен (subdomain).

Можно указывать любое название поддомена, желательно потом не запутаться. Поэтому images, на мой взгляд, самый оптимальный вариант.

Изменение папки загрузки изображений по умолчанию

На этом шаге немного изменим настройки вашего движка WordPress/

Если у вас русский язык в WordPress — тогда вам нужно нажать «Параметры» — «Медиафайлы»

Верхняя строка может быть пустой, тогда все картинки будут ложиться в одну папку. Вторая строка — полный путь к файлам, должен выглядеть примерно так — . Обязательно сохраните настройки, я сам частенько забываю. Теперь, когда вы загружаете картинку или другой файл — все они будут сохраняться на поддомен. Организацию по месяцам оставляем, если она была включена изначально, ниже поймете, почему.

Меняем расположение картинок в старых записях

Новые файлы будут загружаться правильно, но что со старыми? Глупо переносить их вручную, сделаем это умно.

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

Выберите вашу базу данных и зайдите на закладку SQL, там мы будем выполнять код.

UPDATE wp_posts 
SET post_content = REPLACE(post_content,
'http://www.yourdomain.com/wp-content/uploads/','http://images.yourdomain.com/')


Теперь жмем «GO», запрос выполняется и ссылки на картинки во всех постах заменяются на новые.
Теперь нужно заменить ссылки на картинки в коллекции медиафайлов, внутри админпанели WordPress. Код, указанный ниже, поможет в этом.

UPDATE wp_posts 
SET guid = REPLACE(guid,
'http://www.yourdomain.com/wp-content/uploads/','http://images.yourdomain.com/')

Перенаправляем ссылки на новый поддомен

Супер, мы поменяли все ссылки на изображения, загрузили их на новое место, но поисковики-то проиндексировали старые ссылки. Нужно сказать им, что новые картинки — на самом деле старые, а не черти что Для этого поменяем ваш файл .htaccess, добавив туда строчку.

RedirectMatch 301 ^/wp-content/uploads/(.*)$ 

Предварительно забэкапьте этот файл, во избежание всяких нехороших последствий.

Вот и все… Удачной вам оптимизации.

follow us in feedly

,

Комментариев: 48

  1. Людмила

    надо попробовать перенести картинки с сайта на поддомен, главное не накосячить -)

    Ответить
  2. Александр Ка.

    Здравствуйте. Очень интересный метод. Проделал все те манипуляции со своим сайтом и картинки в самих статьях все норм отображаются. Но возникла следующая проблема: при создании новых статей, когда я хочу «задать миниатюру» (справа есть такой модуль или как правильно его назвать), так вот нажимаю на задать миниатюру и далее загружаю файл с компа, нажимаю на «установить миниатюру» и ничего не происходит. Кто сталкивался с таким?

    Ответить
  3. Андрей

    Здравствуйте! Занялся сейчас как раз переносом картинок на поддомен, версия вордпресс 3.5, а в ней отсутствуют поля ввода пути к картинкам, чтобы сменить их, я имею в виду раздел в админке «Параметры > Медиафайлы».
    Где прописать новый путь?
    Пробовал в файле config.php добавлением кода:
    define(‘UPLOADS’, ‘http://image.site.ru/uploads/’);
    Однако получил плохой результат, только запутался и вернул все как было.
    Очень хочется решить этот вопрос.

    Ответить
    • Александр Ка.

      Если у кого-то такая же проблема используйте плагин, по-другому никак — плагин WP Original Media Path

      Ответить
  4. GerinG

    Анна, этот код (SQL-запрос) нужно выполнять в phpMyAdmin. Как это делать — http://gering111.com/zaprosy-sql/, тут написано.

    Если у вас что-то не получается, не расстраивайтесь — можно написать мне в почту или воспользоваться формой обратной связи. Подумаем вместе

    Ответить
  5. Анна

    судя по всему, в моем случае, лучше ручками

    у меня не получилось

    Ответить
  6. Анна

    Теперь нужно заменить ссылки на картинки в коллекции медиафайлов, внутри админпанели WordPress. Код, указанный ниже, поможет в этом.

    вот этот пункт ….
    куда его вставлять?

    Ответить
  7. iFFgen

    Как такового ускорения не заметить… чаще всего поддомены «висят» полностью на том же оборудовании что и основной домен.
    Вот если бы раскинуть их на разные хостинги — вот это было бы дело

    Ответить
    • GerinG

      В принципе верно, на слабом хостинге толку не будет. Разнесение по разным аккаунтам — это действительно идеальный вариант, но и самый дорогой.

      Ответить
  8. Максим

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

    Ответить
    • GerinG

      Тут еще много зависит от плагина, если он жестко прописан к стандартной директории — тогда только переписывать, иначе толку не будет

      Ответить
  9. Аноним

    А почему это названо «поддомен», если это та же самая папка с сайтом? Никакого ускорения :))

    Ответить
    • Виктор Милашечкин

      Распараллеливание загрузки Это раз
      Никто не запрещает перенести в случае чего эту папку на отдельный хост, с сохранением настроек.

      Ответить
  10. Nemilo

    При этом методе картинки получают новый адрес, но пишутся в старую папку. Поэтому и не отображаются в браузере. (ВП 2.9.2)

    Ответить
  11. Йода=)

    Отличный метод. Раньше кстати вешал на внешние хостинги картинок.
    Спасибо за пост и за интересный вариант  

    Ответить
  12. barsukoff

    И еще, как сделать, чтобы wordpress загружал в автомате картинки на поддомен, потому что он продолжает грузить их в старое место

    Ответить
      • barsukoff

         Что-то еще нужно прописывать в поле: Сохранять файлы в этой папке

        По умолчанию: wp-content/uploads

        Ответить
        • Виктор Милашечкин

          Первая строка может быть пустой, если не нужно на поддомене писать все в отдельную папку. А вот вторая — полный путь к домену с картинками. Например, как в данном случае — img.gering111.com. У вас будет адрес вашего домена, естественно

          Ответить
          • barsukoff

            у меня в настройках медиафайлов стоит галочка помещать загруженные мной файлы в папки по месяцу и году

            Ответить
  13. barsukoff

    Сделал все как описано, но грузиться на поддомен картинки из wordpress отказываются и не отображаются

    Ответить
    • Kellytune

       Привет. Ты решил проблему не-отображения картинок? Потому как у меня такая же проблема…одну он загрузил как-то норм, а остальные не отображаются, зато когда заходишь их редактировать — они показываются, но самого изображение нету, только как файл без отображения в медиафайлах.

      Ответить
      • Kellytune

        изображения при урл-заходе на них выдает эрор 500 (с правами все ок — выставила на 777 уже почти все возможные папки и файлы). еще создает папку http: в корневой папке куда и прописываются эти неудавшиеся изображения.

        Ответить
      • venski

        исплевался весь! приходится в ручную из папки по уполномочию в wordpress перекидывать на поддомен. тогда картинки иначинают изображаться.

        Ответить
        • Kellytune

          Увы это не вариант…ускорения прям сильного не заметила,  а проблем на голову набралась….
          Есть ли решение подобной проблемы, товарисчи?

          Ответить
            • Kellytune

              Итак, сделала чисто пошагово что описано в статье, все поменяла, все прописала как описано — в итоге загружаю image через пост или через медиафайлы — типа загрузилось, но изображения нету — вместо него просто название файла линком — перехожу на этот линк — получаю эрор 500. Читала про эрор 500 — ЧПУ не переполнено чем-то лишним — стандартные rewrite и то что по статье указано, написала; права доступа на папку «image» (наш субдомен) 777 — то есть полноценные. Ньюанс описала чуть ниже, повторю, — те файлы что пытаешся загрузить и «изображения нету — вместо него просто название файла линком» в фтп размещаются не в папке «image», а создается сама по себе папка «http:» куда все эти файлы автоматом кидает (пустышками этими). единственный выход, что нашла (повторюсь — не вариант), это через фтп кидать в папку «image» нужную датированную папку/подпапку, но при этом в Медиафайлах этих файлов, которые закидываются через фтп, не наблюдается.
              Вот. Вроде ничего не упустила…

              Ответить
            • Kellytune

              Итак, сделала чисто пошагово что описано в статье, все поменяла, все прописала как описано — в итоге загружаю image через пост или через медиафайлы — типа загрузилось, но изображения нету — вместо него просто название файла линком — перехожу на этот линк — получаю эрор 500. Читала про эрор 500 — ЧПУ не переполнено чем-то лишним — стандартные rewrite и то что по статье указано, написала; права доступа на папку «image» (наш субдомен) 777 — то есть полноценные. Ньюанс описала чуть ниже, повторю, — те файлы что пытаешся загрузить и «изображения нету — вместо него просто название файла линком» в фтп размещаются не в папке «image», а создается сама по себе папка «http:» куда все эти файлы автоматом кидает (пустышками этими). единственный выход, что нашла (повторюсь — не вариант), это через фтп кидать в папку «image» нужную датированную папку/подпапку, но при этом в Медиафайлах этих файлов, которые закидываются через фтп, не наблюдается.
              Вот. Вроде ничего не упустила…

              Ответить
            • Kellytune

              В общем, насколько я поняла — решение проблемы вы не знаете….не надо тогда говорить что кто-то там что-то накрутил…вопрос исчерпан.

              Ответить
              • Виктор Милашечкин

                Не совсем так. Я пытаюсь смоделировать ситуацию, но пока не совсем выходит с хостингом. Тариф не позволяет. Как будет результат я отпишусь. Если у вас есть решение — вэлкам

                Ответить
                • Kellytune

                  Ну вобщем заново копалась, помог другой метод:
                  вместо указанных  в статье «Верхняя строка может быть пустой, тогда все картинки будут ложиться в
                  одну папку. Вторая строка – полный путь к файлам, должен выглядеть
                  примерно так – » я прописала в верхней строке «images/» (без кавычек) и все нормально заработало. До этого пробывала много разных сочетаний с этими строками — выход оказался предельно простым Ес кому полезно было — на здоровье!

                • Me

                  А мне не помогло (, миниатюры в постах не отображаются — все равно ссылаются на папку wp-content/uploads

    • GerinG

      Проверить не могу, тариф не позволяет. А локальное зеркало — не показатель

      Ответить
  14. Chimera

    Отличная идея между прочим. Я раньше картинки на внешку грузил (piasa, flickr), сегодня полезу убивать свой блог — если не получиться с первого раза ))) … бэкапнусь за одно….

    Ответить
  15. mautdib

    Спасибо. Подробная ваша инструкция очень помогла. Ждем от вас ещё открытий!

    Ответить
  16. arkadjar

    Спасибо,не знаете,а с хостингом Timeweb проблем не будет?Вроде не должно,а вдруг Вы с ним работаете и знаете?

    Ответить
    • GerinG

      Не работаю. Но, не думаю, что будут проблемы. Если поддомены включены в тарифный план Вашего хостинга — все будет нормально.

      Ответить
  17. Женя

    Хороший вариант ускорения сайта. Сам бы не догадался. Надо будет испытать ).

    Ответить