С помощью CloudFlare и гибкого языка Varnish vcl, обнаружение GeoIP, мы можем кэшировать каждую валюту отдельно полностью в обход обработчика PHP в бэкенде для последующих посетителей, которые разделяют одни и те же параметры Currency, основанные на их геолокации.
Для этого теста мы взяли сервер VPS с LEMP (Nginx, PHP7, MariaDB и Varnish 4).
Мы установили плагин Easy Digital Downloads в WordPress и добавили продукт Varnishа.
Установили плагин aelia EDD WooCommerce Currency Switcher и установили 2 разные валюты: RU и USD.
Использовали конфигурацию Varnish, описанную ниже, и проводили тесты с и без кэша.
Без Varnish страница продукта загрузка Easy Digital за 1,54 секунд
С Varnish страница продукта загружала Easy Digital за 351 мс
Это довольно значительное повышение производительности, увеличение скорости более чем на 400% для простых цифровых загрузок с различными валютами.
Обзор установки
Войти в свою учетную запись CloudFlare.
Выберите Network Tab и переключите IP Geolocation в ON
Теперь вы будете иметь набор заголовков CF-IPCountry для всех посетителей, пришедших через CloudFlare.
Зайдите в Downloads > Currency Switcher > Geolocation tab и проверьте автоматическое включение локации выбора валюты в зависимости от посетителей.
Установите информацию пользовательской валюты из руководства Aelie, мы использовали плагин Pluginception, чтобы создать пользовательский плагин с отображением валюты и страны.
Вы должны иметь модуль std импортированный в начале Varnish 4 VCL, если вы хотите, просмотреть страны и валюту, установленные в Varnishlog.
Откройте Varnish VCL
sudo nano /etc/varnish/default.vcl
Теперь измените следующие разделы Varnish.
Здесь мы устанавливаем пользовательский заголовок на основе заголовка CloudFlare GeoIP.
Мы используем пользовательский заголовок X-Country, чтобы задать заголовок X-Currency.
Мы хэшируем пользовательские строки запроса и валюту aelia , устанавливаем куки в плагине Easy Digital Downloads Currency Switcher.
sub vcl_recv { #set country header based on CloudFlare's GeoIP if (req.http.CF-IPCountry) { set req.http.X-country = req.http.CF-IPCountry; } #set currency based on country header if (req.http.X-country == "RU") { set req.http.X-currency = "RU"; } if (req.http.X-country == "US") { set req.http.X-currency = "USD"; } #cache aelia currency cookie if (req.http.cookie ~ "aelia_cs_selected_currency") { return(hash); } #cache aelia query strings explicitly if (req.url ~ "\?aelia_(cs_currency|customer_country|customer_state)=") return(hash); }
В подразделах vcl_hash мы кэшируем разные версии каждой страницы на основе заголовка X-Currency.
sub vcl_hash { if (req.http.cookie ~ "aelia_cs_selected_currency") { hash_data(req.http.cookie); } #hash based on currency header Varnish sets if (req.http.X-currency) { hash_data(req.http.X-currency); } }
Ctrl + X, Y и Enter, чтобы сохранить.
Эта команда будет проверять синтаксис Varnish VCL
varnishd -C -f /etc/varnish/default.vcl
Теперь перезагрузите службу Varnish
sudo service varnish reload
Использование командной строки на два различных VPS в одном и том же регионе, мы можем проверить Varnish на кэширование наших пользовательских валют магазина и страниц продукта с помощью curl.
sudo apt-get install curl -y
Теперь проверьте с помощью curl URL магазина или страницы продукта. С помощью переключателя -I
, который возвращает заголовки ответа.
curl -I https://wp-bullet.online/downloads/varnish-carrot/
Сначала вы, вероятно, увидите заголовок X-Cache: MISS
, так как это первый визит из этого конкретного континента.
HTTP/1.1 200 OK Date: Thu, 06 Jul 2017 11:45:00 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Set-Cookie: __cfduid=de919220180c6a9b4968f47b7a569dfad1473371438; expires=Fri, 07-Jul-17 11:45:00 GMT; path=/; domain=.wp-bullet.online; HttpOnly Expires: Thu, 6 Jul 2017 11:45:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Link: <https://wp-bullet.online/wp-json/>; rel="https://api.w.org/" Link: <https://wp-bullet.online/?p=77>; rel=shortlink Vary: Accept-Encoding X-Varnish: 2 Age: 0 Via: 1.1 varnish-v4 X-Cache: MISS Server: cloudflare-nginx CF-RAY: 2df59e01e14a2b7c-AMS
Повторите ту же команду curl
curl -I https://wp-bullet.online/downloads/varnish-carrot/
Теперь вы увидите X-Cache: HIT
покажет Varnish кэш страницы валюты в WooCommerce на основе устанавленых заголовков.
HTTP/1.1 200 OK Date: Thu, 06 Jul 2017 11:45:00 GMT Content-Type: text/html; charset=UTF-8 Connection: keep-alive Set-Cookie: __cfduid=d887db6a98a7f08a0253efaadb924027f1473371439; expires=Fri, 06-Jul-17 11:45:00 GMT; path=/; domain=.wp-bullet.online; HttpOnly Expires: Thu, 06 Jul 2017 11:45:00 GMT Cache-Control: no-store, no-cache, must-revalidate Pragma: no-cache Link: <https://wp-bullet.online/wp-json/>; rel="https://api.w.org/" Link: <https://wp-bullet.online/?p=77>; rel=shortlink Vary: Accept-Encoding X-Varnish: 32770 3 Age: 1 Via: 1.1 varnish-v4 X-Cache: HIT Server: cloudflare-nginx CF-RAY: 2df59e0be7402c2a-AMS
Вы можете использовать Pingdom, чтобы проверить из разных мест. Это даст вам небольшой скриншот, и вы можете открыть для проверки правильности установки валюты.
Заполните форму и наш менеджер перезвонит Вам в самое ближайшее время!
Спасибо! Ваша заявка принята
Спасибо! Ваша заявка принята