текст перекладу
Фото від Stephen Phillips - Hostreviews.co.uk на Unsplash
Отже, я працював над функцією, і однією з речей, які повинна була виконувати ця сторінка, було перевірити правильність електронної пошти, як ми всі це робимо, правда? У Laravel це надзвичайно просто: ви просто додаєте 'email'
до правил валідації форми. Готово. Laravel обробляє все за лаштунками, щоб переконатися, що пошта виглядає правильно.
Але потім я подумав: «Чому б не зробити ще один крок?» Я додав 'email:dns'
до правил валідації. Якщо ви використовували це або бачили раніше, ви знаєте, що ця перевірка переконується, що домен електронної пошти має правильний MX запис, фактично перевіряючи, чи може пошта отримувати повідомлення. Ця маленька функція йде з пакету egulias/email-validator
.
Ось де стає цікаво.
Чи може ця одна маленька зміна мати такий великий вплив на час відгуку вашої сторінки? Так, може. І саме тому я пишу це, щоб попередити вас, щоб ви не були неприємно здивовані.
Коли додано 'email:dns'
, щоразу, коли хтось надсилає форму, Laravel бере електронну пошту, дивиться на домен (частину після символу "@") і звертається до DNS серверів, щоб підтвердити, що домен існує і може обробляти пошту. Звучить добре, правда?
Проблема в тому, що цей процес залежить від третьої сторони — DNS серверу. Ви не можете контролювати, як швидко або повільно він відповідає. Іноді все працює добре, і сторінка завантажується швидко. Але інколи, він може зависнути в очікуванні, і ваші користувачі залишатимуться з обертальним спиннером на екрані. Найгірший випадок? Він тайм-аутить або не вдається, що призводить до помилки.
І ось тут підступ: оскільки це відбувається під час валідації форми, ви не можете передати це в чергу або відкласти. Це відбувається прямо там, в реальному часі, поки користувач чекає.
З email:dns
Без email:dns
Будьте обережні
-
Маленькі зміни можуть мати великі наслідки
Додавання'email:dns'
здавалося маленьким поліпшенням і однією з тих «приємних» функцій. Але це може мати великий вплив на користувацький досвід, через те, що ви не можете контролювати. -
Залежність від сторонніх сервісів непередбачувана
Перевірки DNS залежать від зовнішніх серверів. Якщо вони повільні, ваша сторінка буде повільною. Якщо вони не вдаються, валідація не пройде. Все просто.
Що можна зробити?
Якщо ви розглядаєте можливість використання 'email:dns'
у ваших правилах валідації, ось моя порада:
- Думайте двічі: Чи дійсно потрібно перевіряти домен електронної пошти на цьому етапі? Для більшості випадків просто перевірки формату з
'email'
буде достатньо. - Використовуйте обережно: Якщо вам потрібно
'email:dns'
, обмежте його до конкретних форм або сценаріїв, де це дійсно необхідно. - Підготуйтеся до найгіршого: Будьте готові до ситуацій, коли перевірки DNS будуть повільними або не вдасться. Подумайте про додавання резервної копії або попередження користувачів, коли валідація займає більше часу, ніж очікувалося.
В кінцевому рахунку, кожна секунда має значення, коли справа стосується швидкості завантаження сторінки, і іноді менше — це більше.
Перекладено з: Be Aware: This Could Affect Your Page Speed In Laravel