Geocoding за допомогою Cloudflare

1
Перекладено ШІ
Оригінал: Laravel News
Оновлено: 17 грудня, 2025
Я використав заголовок CF‑IPCountry від Cloudflare, щоб показувати банер із знижкою з урахуванням купівельної спроможності відвідувачів сайту і водночас спростити код. Хочете дізнатися, як проста трансформація URL-адреси дозволила видалити сотні рядків коду й зробити сторінки кешованими та швидшими?

Пропоную Laravel Shift за «20 баксів». Але ця сума може відрізнятися залежно від країни, тож якщо у вашій державі долар має на 50% меншу купівельну спроможність, я застосовую паритет купівельної спроможності.

Щоб визначити вашу країну, я використовую сервіс геокодування, який зіставляє IP з країною. Якщо це держава, для якої діє коригування, у верхній частині сторінки з’явиться банер із пропозицією активувати знижку.

Працюючи над прискоренням laravelshift.com через Cloudflare, я натрапив на ще один їхній безкоштовний сервіс — геокодування. Cloudflare додає заголовок країни до запиту перед його передачою на ваш вебсервер.

Заголовок CF-IPCountry — це дволітерний код країни, наприклад US або UK. У моєму випадку я використовував цей заголовок напряму, зіставляв код із назвою країни і перевіряв паритет купівельної спроможності.

Це дало дві переваги: по-перше, я прибрав сотні рядків коду; по-друге — зміг кешувати сторінку.

Раніше логіка перевірки заголовків робила сторінку надто динамічною для кешування, тому після завантаження доводилося робити API-запит для визначення країни.

Окрім зайвого коду, це був ще один, хоч і легкий, запит.

Оскільки заголовок доступний на рівні Cloudflare, я створив transformation rule, яка перевіряє код країни й додає відповідний query string до запиту.

Це дозволило кешувати дві версії сторінки: стандартну й ту, що показує банер паритету купівельної спроможності.

Також зазначу, що оскільки це опційна функція, місцезнаходження перевіряється вдруге перед активацією знижки.

Якщо хочете побачити повний рефакторинг коду, я стрімив це для курсу Confident Laravel.

А якщо прагнете пришвидшити завантаження своїх сторінок, зазирніть у мій майбутній відеокурс Fast Laravel.