Статьи

Ускорьте WordPress: использование CDN, сжатие и минификация

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

Давайте начнем!

Это простая математика: если размер вашей страницы составляет 1 МБ, посетитель с 10 Мбит-соединением может загрузить ее за 800 миллисекунд. Таким образом, если вы можете уменьшить размер страницы, скажем, до 600 КБ, посетителю потребуется всего полсекунды для ее загрузки.

К счастью, есть много способов сжать и минимизировать вывод CSS, JS и HTML ваших страниц. Посмотрим как:

Форматы сжатия HTTP, такие как gzip и deflate, используются почти на каждой серверной платформе (включая Apache и Microsoft IIS) и принимаются практически каждым браузером, поэтому HTTP-сжатие, скорее всего, будет работать на каждом устройстве и на каждом сервере. (Ваш сервер может даже включить его по умолчанию. Чтобы проверить это, выполните поиск по запросу « Проверка сжатия http », щелкните один из результатов и введите адрес своего веб-сайта.)

Так как же включить HTTP-сжатие? Есть несколько способов сделать это, но я думаю, что эти два могут помочь каждому:

1. Включите сжатие через .htaccess : если ваш сервер не включил HTTP-сжатие по умолчанию, вы можете включить его, вставив следующий код в ваш файл .htaccess (взят из Boilerplate HTML5 ):

01
02
03
04
05
06
07
08
09
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
<IfModule mod_deflate.c>
 
    # Force compression for mangled headers.
    # https://developer.yahoo.com/blogs/ydn/pushing-beyond-gzipping-25601.html
 
    <IfModule mod_setenvif.c>
        <IfModule mod_headers.c>
            SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
            RequestHeader append Accept-Encoding «gzip,deflate» env=HAVE_Accept-Encoding
        </IfModule>
    </IfModule>
 
    # — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
 
    # Mark certain resources as been compressed in order to:
    #
    # 1) prevent Apache from recompressing them
    # 2) ensure that they are served with the correct
    # `Content-Encoding` HTTP response header
 
    <IfModule mod_mime.c>
        AddEncoding gzip svgz
    </IfModule>
 
    # — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — — —
 
    # Compress all output labeled with one of the following media types.
 
    # IMPORTANT: For Apache versions below 2.3.7 you don’t need to enable
    # `mod_filter` and can remove the `<IfModule mod_filter.c>` & `</IfModule>`
    # lines as `AddOutputFilterByType` is still in the core directives.
 
    <IfModule mod_filter.c>
        AddOutputFilterByType DEFLATE «application/atom+xml» \
                                      «application/javascript» \
                                      «application/json» \
                                      «application/ld+json» \
                                      «application/manifest+json» \
                                      «application/rss+xml» \
                                      «application/vnd.geo+json» \
                                      «application/vnd.ms-fontobject» \
                                      «application/x-font-ttf» \
                                      «application/x-web-app-manifest+json» \
                                      «application/xhtml+xml» \
                                      «application/xml» \
                                      «font/opentype» \
                                      «image/svg+xml» \
                                      «image/x-icon» \
                                      «text/cache-manifest» \
                                      «text/css» \
                                      «text/html» \
                                      «text/plain» \
                                      «text/vtt» \
                                      «text/x-component» \
                                      «text/xml»
    </IfModule>
 
</IfModule>

2. Включите HTTP-сжатие с помощью плагинов. Если вы не знаете, как редактировать файл .htaccess (или просто не хотите этого делать), вы можете включить HTTP-сжатие с помощью двух популярных плагинов для кэширования: WP Super Cache и W3. Total Cache . Оба они предлагают возможность включить HTTP-сжатие через страницы настроек.

Сокращение активов почти так же важно, как их сжатие. В файлах PHP пробелы не очень важны, так как они анализируются и компилируются; но пробелы в файлах HTML, CSS и JS увеличивают размер файла, а это означает, что посетители будут загружать большие файлы. Чтобы избежать этого, вы можете удалить все ненужные символы в ваших файлах HTML, CSS и JS.

Помимо их минимизации, вы также можете объединить несколько файлов CSS и JS в один файл CSS и JS. Это уменьшит количество запросов DNS, и браузеры не будут загружать каждый файл CSS и JS отдельно.

Сокращение и объединение ваших активов вручную считается плохой практикой и в некоторых случаях может оказаться невозможным. К счастью, с помощью плагинов действительно легко добиться этого автоматически. Если вы используете плагин W3 Total Cache, вы можете включить минимизацию и объединение ваших CSS и JavaScript файлов через страницу настроек плагина. Если вы не используете его, вы можете установить отдельный плагин — мой любимый плагин — Autoptimize . Autoptimize отлично справляется со своей задачей и имеет несколько очень полезных опций, которыми вы можете управлять. Я использую этот с WP Super Cache и очень доволен результатами.

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

Логика сетей доставки контента заключается в более эффективном обслуживании контента с использованием «пограничных серверов» по ​​всему миру. Эти серверы могут содержать загружаемый контент (например, изображения, файлы CSS и т. Д.), И когда пользователь заходит на вашу страницу, ближайший к серверу пограничный сервер обслуживает файлы. С низкими ценами на пропускную способность (даже бесплатными, иногда) и невероятно быстрыми серверами доставка вашего контента будет быстрее, чем когда-либо

Существует более нескольких плагинов, которые обеспечивают синхронизацию ваших активов с различными CDN, но я назову лишь несколько:

  • Jetpack ‘s Photon: Jetpack один из самых популярных плагинов для WordPress в репозитории плагинов. Он предоставляет ряд функций в качестве «аддонов». (Думайте об этом как о плагине, обслуживающем множество плагинов.) Один из аддонов называется « Фотон », простой и бесплатный сервис CDN для вашего сайта. Photon будет размещать ваши изображения и избранные изображения в ваших сообщениях и страницах, загружать их на серверы WP.com и изменять URL-адреса ваших изображений новыми URL-адресами из CDN. Он будет фильтровать ваши сообщения только для изменения URL-адресов (то есть он не будет редактировать ваши сообщения), так что вы можете легко отключить его, если он вам не нравится, но вам, вероятно, он понравится очень это один из лучший бесплатный выбор для большинства сайтов WordPress.
  • CloudFlare : CloudFlare больше похож на прокси-сервер, который имеет CDN и действует как брандмауэр для защиты вашего сайта от вредоносных атак. А поскольку вы используете их зоны DNS, URL-адреса изображений останутся прежними, но будут кэшироваться на серверах CloudFlare. Но будьте осторожны — установка CloudFlare немного сложна. Ознакомьтесь со статьей WPBeginner для получения дополнительной информации об установке CloudFlare и использовании его функций CDN.
  • W3 Total Cache : Они не зря назвали его «W3 Total Cache». В конце концов, этот чрезвычайно популярный плагин кэширования включает в себя функцию интеграции CDN по вашему выбору на ваш сайт. MaxCDN, один из популярных брендов CDN, имеет подробное руководство по установке своего CDN в настройках W3 Total Cache.

Во второй части этой серии мы рассмотрели сжатие и минимизацию ресурсов, а также использование CDN в WordPress. В следующей (и последней) статье мы увидим важность оптимизации изображений и подведем итоги об использовании WordPress со здравым смыслом.

Что вы думаете об ускорении WordPress? Поделитесь своими мыслями ниже в разделе комментариев. И если вам понравилась статья, не забудьте поделиться ею.

Увидимся в следующей части!