Сообщения

Почему ваши 90 баллов в Lighthouse — это самообман, или как сайты на самом деле проваливают Core Web Vitals

Почему ваши 90 баллов в Lighthouse — это самообман, или как сайты на самом деле проваливают Core Web Vitals Три года назад я наступил на грабли, которые до сих пор снятся мне в кошмарах перед крупными релизами. Мы сдавали сложный интернет-магазин. Дизайнеры плакали от восторга, заказчик довольно потирал руки, а мой ведущий разработчик гордо показывал зеленую зону в PageSpeed Insights на своем новеньком MacBook Pro. 98 баллов из 100. Красота. Через месяц трафик из Google просел на 24%. В консоли вылезло предупреждение: LCP (Largest Contentful Paint) в реальном мире составлял 6.4 секунды. Шесть. С лишним. Секунд. На дев-сервере все летало, а у живых людей сайт безбожно тормозил. Выяснилось, что обычные покупатели заходили со старых смартфонов Xiaomi через паршивый 3G в метро. А наш красивый баннер весом в 4 мегабайта в шапке сайта просто убивал всю загрузку. Мы смотрели на синтетические тесты, а Google оценивал реальный опыт живых людей. Это был жесткий, но полезный урок. Ловушка...

Как я выбросил Google Analytics и спас клиента от штрафа в 2500 евро

Как я выбросил Google Analytics и спас клиента от штрафа в 2500 евро Два года назад я наступил на грабли, которые стоили моему клиенту из Австрии ровно 2500 евро. Это был небольшой семейный бизнес по производству крафтовой упаковки. Я собрал им аккуратный, быстрый сайт на статике. И, не задумываясь, по привычке воткнул туда код Google Analytics. Стандартная процедура, мы все так делали сотни раз. А через три месяца клиент получил «письмо счастья» от мюнхенского адвоката. Суть претензии: сайт передает IP-адреса посетителей на американские серверы Google без их предварительного, активного согласия. Это прямое нарушение GDPR. Суд в Мюнхене тогда как раз вынес прецедентное решение по этому поводу. Нам предложили либо заплатить сразу, либо готовиться к судебным издержкам, которые гарантированно превысили бы эту сумму в три раза. Мы заплатили. В тот день я понял две вещи. Во-первых, эпоха бездумного копирования скриптов от ИТ-гигантов закончилась. Во-вторых, современный веб тяжело боле...

Stop Pasting Static Schema Into Your Framer Pages. It’s Breaking Your SEO.

Stop Pasting Static Schema Into Your Framer Pages. It’s Breaking Your SEO. Last year, a client called me at 3:00 AM. They were panicking. Their main landing page—a gorgeous Framer site selling a $189 productivity planner—had just been flagged by Google Merchant Center for "mismatched microdata." Their search traffic dropped by 35% over the weekend. It felt like a gut punch. Why did it happen? A month prior, they hired a cheap framer jsonld freelance gig to set up their schema. The developer did what 90% of people do. They went to a free schema generator, pasted the product details, got a block of JSON-LD, and pasted it directly into the custom code block of the Framer page settings. It worked. For three weeks. Then, the client ran a flash sale. They dropped the price on the page to $149. They updated the text layer in Framer, hit publish, and went to bed. But they forgot about the custom code block. The static JSON-LD still told Google's bots the price was $189....

How to Fix Core Web Vitals and Speed Up a Slow WordPress Site

Core Web Vitals Optimization: A Technical Guide Core Web Vitals (CWV) are now a direct ranking factor. If your site scores poorly, you are losing traffic and conversion. This guide covers the technical implementation to move your site into the "Green" zone. 1. Measuring Your Baseline Before changing anything, you need data. Do not rely on "gut feeling." Google PageSpeed Insights (PSI): Use this for lab data and field data (CrUX). Chrome DevTools (Lighthouse): Use the "Performance" tab to record a trace. Look for the "Long Tasks" in the main thread. WebPageTest: Use this for waterfall analysis to see which specific assets are blocking the render. Action: Run PSI. Note your LCP (Largest Contentful Paint), CLS (Cumulative Layout Shift), and INP (Interaction to Next Paint). 2. Reducing TTFB (Time to First Byte) TTFB is the foundation. If your server takes 1s to respond, your LCP will never be under 2.5s. Database Cleanup: Over time,...

Как я похоронил три недели жизни в блоке T123, или почему сложные калькуляторы ломают Тильду

Как я похоронил три недели жизни в блоке T123, или почему сложные калькуляторы ломают Тильду Я занимаюсь веб-разработкой уже девятый год. За это время я научился спокойно относиться к капризам заказчиков, падениям серверов и даже к правкам в ночь перед релизом. Но есть одна вещь, от которой у меня до сих пор дергается левый глаз. Это фраза: «Нам тут нужно на сайт накидать простенький калькулятор, там буквально пара шагов и ветвление логики». Два года назад ко мне пришел клиент. Ребята строили каркасные бани и модульные дома. Бюджет на калькулятор был скромный — 40 000 рублей. По ТЗ все выглядело безобидно: пользователь выбирает площадь, тип фундамента, материал отделки и получает примерную стоимость. Сначала всё шло отлично. Я за пару часов набросал дизайн в Zero Block, открыл блок T123 для кастомного HTML/JS и приготовился быстро забрать деньги. Я закончил этот проект через 19 дней. На 17-й день я сидел перед монитором в три часа ночи, тупо смотрел на 1400 строк спагетти-кода в ...

The Invisible Wall: Why Webflow CMS Lists Break at Scale (and How to Fix It)

The Invisible Wall: Why Webflow CMS Lists Break at Scale (and How to Fix It) I still get a twitch in my left eye when a client asks to "just add a quick search bar" to their directory website. It sounds simple. You create cms collection webflow structures, map your custom fields, drop in a cms collection list webflow , and call it a day. The video tutorials make it look like absolute magic. They show you a beautiful, clean layout with ten items, and it flies. But Webflow has a dirty secret. It is a limitation that cost me a $12,000 client relationship back in 2022. We were building a luxury real estate portal. The client had 850 properties. That is not a massive database by traditional web standards, but for a cms collection webflow , it is a absolute minefield. We set up the dynamic template pages, mapped the filters, and built a gorgeous frontend. Then we hit the wall. The infamous 100-item rendering limit. To show more than 100 items, Webflow forces you to turn on...

Анатомия одной попытки: как подключить внешний API к Squarespace и не слить ключи

Анатомия одной попытки: как подключить внешний API к Squarespace и не слить ключи Год назад ко мне пришел владелец нишевого магазина мебели на Squarespace 7.1. Задача звучала невинно: сделать калькулятор доставки прямо в карточке товара, запрашивая точный расчет через API транспортной компании. Штатный верстальщик заказчика предпринял смелую попытку решить задачу «в лоб». Он открыл Code Injection, написал пару десятков строк на чистом JavaScript с обычным fetch() и зашил туда боевой Bearer-токен сервиса. Через четыре дня баланс аккаунта транспортной компании улетел в минус на 92 000 рублей. Скрипт-кидди просто открыли вкладку Network в Chrome DevTools, скопировали ключ и прогнали через него сотни тысяч своих тяжелых запросов. Это классика. Первая попытка подружить закрытый конструктор с внешним миром почти всегда заканчивается либо дырой в безопасности, либо разбитыми надеждами. Две стены Squarespace: CORS и браузерный публичный код Когда создается нестандартная squarespace ap...