Вы получаете сдвиг макета, но не в те моменты, когда измеряет Google Page Speed Insights.
Загрузка рекламы задерживается на рабочем столе.
Проблема в том, что сайт полностью загружается, а затем загружается реклама. Page Speed Insights не увидит этого изменения, так как он уже завершил свои тесты, поэтому он видит все четыре версии страницы как одинаковые.
На мобильных устройствах реклама не загружается в вообще (не уверен, намеренно ли это), поэтому очевидно, что они не имеют никакого эффекта.
За исключением загрузки рекламы на ваш сайт не происходит никаких сдвигов макета, которые я мог бы сразу увидеть. Поскольку вы определяете высоту и ширину своих изображений, а рендеринг происходит сразу, нет сдвигов макета «выше сгиба», на что и обращает внимание PSI. (смоделированные данные) отличается от данных поля (данные реального мира) из-за рекламы, заставляющей страницу прыгать, и того факта, что данные поля собираются во время навигации людей страница и не останавливается только на загрузке страницы, в отличие от PSI. Вы можете найти это объяснение в CLS от Адди Османи , которая работает в Google Chrome, полезное и актуальное.
Если вы откроете инструменты разработчика и включите «Мигание краски» и «Области сдвига макета» (на вкладке «Визуализация»), у вас будет два инструмента, которые полезны для определения того, что вызывает сдвиги макета. (Что в вашем случае в значительной степени сводится к рекламе, как вы упомянули.)
Один из способов остановить это - сделать то же самое с регионами рекламы, что и со своими изображениями. Дайте им высоту, прежде чем они загрузятся, и тогда для них уже будет выделено пространство. Вы можете использовать padding-top CSS hack или что-то подобное, чтобы добиться этого, если просто определить фиксированную высоту невозможно.