Я пытаюсь оптимизировать сайт Wordpress, на котором есть несколько партнерских фреймов Amazon. Эти iframe — это те, которые вы можете получить в левом углу Amazon -> Получить ссылку -> Текст + изображение, когда вы находитесь на определенном продукте, чтобы получить партнерскую ссылку на него:
и вот как они выглядят (как типичный партнерский iframe Amazon):
Мой вопрос возникает, потому что, когда я запускаю тест на PageSpeed, он показывает мне ошибку «Включить сжатие текста», которая ссылается на все URL-адреса из фреймов:
На моем хостинге есть CPanel, поэтому я включил сжатие текста в cPanel -> Оптимизировать веб-сайт -> Отметить параметр «Сжать все содержимое», но он все еще показывает ошибку, поэтому, похоже, это не оказывает на них никакого влияния.
Есть ли способ оптимизировать эти iframe и включить для них сжатие текста? Немного раздражает, что для их загрузки требуется так много времени (а их где-то 15-20).
Поскольку сжатие происходит на стороне сервера, невозможно сжать файлы, размещенные за пределами вашего сервера, и поэтому вы не можете обслуживать файлы из сжатого iframe Amazon. Также фреймы могут вызывать проблемы с кэшированием на сайте.
Может быть, альтернативой было бы создать коробку продукта самостоятельно, а затем связать их с продуктом, используя вместо этого партнерскую ссылку?
Старый ответ:
Какая версия апача у вас стоит?
Я считаю, что если это выше версии 2, вы можете попробовать добавить это в свой корневой .htaccess.
Попробуйте и посмотрите, влияет ли сжатие на фреймы.
# BEGIN GZIP
<IfModule mod_filter.c>
AddOutputFilterByType DEFLATE "application/atom+xml" \
"application/javascript" \
"application/json" \
"application/ld+json" \
"application/manifest+json" \
"application/rdf+xml" \
"application/rss+xml" \
"application/schema+json" \
"application/vnd.geo+json" \
"application/vnd.ms-fontobject" \
"application/x-font-ttf" \
"application/x-javascript" \
"application/x-web-app-manifest+json" \
"application/xhtml+xml" \
"application/xml" \
"font/eot" \
"font/opentype" \
"image/bmp" \
"image/svg+xml" \
"image/vnd.microsoft.icon" \
"image/x-icon" \
"text/cache-manifest" \
"text/css" \
"text/html" \
"text/javascript" \
"text/plain" \
"text/vcard" \
"text/vnd.rim.location.xloc" \
"text/vtt" \
"text/x-component" \
"text/x-cross-domain-policy" \
"text/xml"
</IfModule>
# END GZIP
Моя идея заключалась в том, что может быть проблема с настройками сжатия на стороне сервера, и вместо этого добавление сжатия в htaccess исправит это. Очень жаль, что это не сработало. Что я знаю, так это то, что вы должны иметь возможность сжимать текст из iframe с помощью deflate/gzip, поэтому мне интересно, что еще может быть причиной проблемы. Я еще немного покопаюсь и вернусь к вам, если найду решение. :)
И только iframe не сжимается? Пробовали ли вы тестировать сайт, например, на giftofspeed.com/gzip-test? Таким образом, мы можем исключить любую другую ошибку :) Например, я знаю, что иногда после активации сжатия необходимо перезапустить сервер. @ФрансискоРомеро
Я предполагаю, что вы пытались с помощью htaccess имитировать предполагаемое поведение cPanel при выборе Compress All Content
, верно?
Точно, это была моя идея, по крайней мере. Я подумал, что это может стоить попробовать :)
@FranciscoRomero Я действительно нашел эту информацию: «Некоторые оптимизации, такие как кэширование браузера и сжатие GZIP, могут применяться только к файлам, размещенным на вашем сервере. Вы не можете контролировать ресурсы, размещенные на других серверах». Это означает, что я был неправ, и вы на самом деле не можете сжимать фреймы из Amazon, что имеет смысл, когда я думаю об этом. Когда я пробовал это, я размещал свой собственный iframe, и, конечно же, это сработало. Извините, что дал вам дезинформацию!
В этом есть смысл, почему он не работал с iframes Amazon, потому что виджет загружается со своего сервера (с URL-адреса https://ws-eu.assoc-amazon.com/widgets/...
). Что мне интересно, так это то, что такая компания, как Amazon, не оптимизирует такого рода вещи, которые сделают сайты, у которых есть свои URL-адреса, быстрее, поэтому они получат больше трафика. Я ожидаю, что это будет решение для решения этой проблемы: / Спасибо за всю вашу помощь!
Да, очень странно, что такая огромная компания, как Amazon, не будет предоставлять сжатую информацию об iframe для своих партнеров. У меня есть идея, что, возможно, они не могут проверить информацию о браузере через iframe и не могут определить, поддерживает ли браузер сжатие или нет, и, может быть, поэтому они вместо этого подают ее всем без сжатия? Может быть поэтому... Но это всего лишь догадка. Не беспокойся, рад, что смог хоть немного помочь. :)
Это имело бы смысл, что они не хотят рисковать из-за ненужных «ошибок» при сжатии, но я не хочу думать, что нет возможности оптимизировать это. Я знаю, что есть плагины, которые избегают этого, потому что они используют API и не используют iframe, но вам нужно как минимум 3 продажи в месяц, чтобы получить доступ к API (если я не ошибаюсь).
Эшендейл Я, наконец, отметил ответ @Hari E как принятый и дал ему награду, потому что с его решением я исправил почти 100% ошибки. Я даю вам голос, потому что вы также помогли мне прояснить сжатие текста. Спасибо за помощь! :)
Рад, что вы наконец нашли решение! 😊 Спасибо за плюс.
Вы можете добавить ленивую загрузку в свой Iframe, чтобы увеличить скорость страницы. Обратитесь к этой ссылке, чтобы реализовать ленивую загрузку для фреймов в Wordpress. https://web.dev/iframe-lazy-loading/#wordpress
<iframe
loading = "lazy"
style = "width:120px;
height:240px;"
marginwidth = "0"
marginheight = "0"
scrolling = "no"
frameborder = "0"
src= {amazon link}>
</iframe>
Спасибо! Заставив их загружать ленивую загрузку, вы почти исправите ошибку! Теперь фреймы, которые не отображаются при первой загрузке, не выдают ошибку, но для тех, которые загружаются при первой загрузке страницы, PageSpeeds по-прежнему показывает ошибку Enable text compression
. Я предполагаю, что PageSpeeds не помечает «ленивые» iframe этой ошибкой, потому что сейчас это не повлияет на процесс загрузки страницы, но... есть ли способ исправить ошибку для тех iframe, которые все еще загружаются? Спасибо!
Если вы все еще хотите увеличить скорость страницы, вам нужно использовать методы сжатия, такие как Gzip или Brotli. Но оба эти метода сжатия предназначены для файлов js, cs и html. Я не думаю, что мы можем реализовать это на фреймах
Если приведенный выше код помогает, пожалуйста, отметьте его как ответ :)
Да, @Ashendale указал, что сжатие невозможно, потому что оно выполняется на стороне сервера, поэтому невозможно сжать файлы, размещенные снаружи. И, конечно же, я отмечу его как принятый, если никто не добавит ответа, который исправит все фреймы.
Привет, Хари Э., я отметил ваш вопрос и дал награду, потому что ваш ответ помог мне решить почти 100% ошибок iframe. Я хотел бы исправить 100%, но хорошо... это хорошее улучшение. Большое спасибо за Вашу помощь!
Спасибо, что отметили это как ответ. Если я найду другие способы улучшить его, я добавлю еще один ответ здесь. :)
Привет! Спасибо за ваш ответ! Я добавил код, который вы предложили, в корень .htaccess моего сайта WordPress, но он не исправляет ошибку. У меня есть
Apache 2.4.54
.