Как включить сжатие текста в фреймах Amazon Affiliate?

Я пытаюсь оптимизировать сайт Wordpress, на котором есть несколько партнерских фреймов Amazon. Эти iframe — это те, которые вы можете получить в левом углу Amazon -> Получить ссылку -> Текст + изображение, когда вы находитесь на определенном продукте, чтобы получить партнерскую ссылку на него:

и вот как они выглядят (как типичный партнерский iframe Amazon):

Мой вопрос возникает, потому что, когда я запускаю тест на PageSpeed, он показывает мне ошибку «Включить сжатие текста», которая ссылается на все URL-адреса из фреймов:

На моем хостинге есть CPanel, поэтому я включил сжатие текста в cPanel -> Оптимизировать веб-сайт -> Отметить параметр «Сжать все содержимое», но он все еще показывает ошибку, поэтому, похоже, это не оказывает на них никакого влияния.

Есть ли способ оптимизировать эти iframe и включить для них сжатие текста? Немного раздражает, что для их загрузки требуется так много времени (а их где-то 15-20).

Как убрать количество товаров в категории WooCommerce
Как убрать количество товаров в категории WooCommerce
По умолчанию WooCommerce показывает количество товаров рядом с категорией, как показано ниже.
2
0
149
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Поскольку сжатие происходит на стороне сервера, невозможно сжать файлы, размещенные за пределами вашего сервера, и поэтому вы не можете обслуживать файлы из сжатого 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 моего сайта WordPress, но он не исправляет ошибку. У меня есть Apache 2.4.54.

Francisco Romero 05.01.2023 16:11

Моя идея заключалась в том, что может быть проблема с настройками сжатия на стороне сервера, и вместо этого добавление сжатия в htaccess исправит это. Очень жаль, что это не сработало. Что я знаю, так это то, что вы должны иметь возможность сжимать текст из iframe с помощью deflate/gzip, поэтому мне интересно, что еще может быть причиной проблемы. Я еще немного покопаюсь и вернусь к вам, если найду решение. :)

Ashendale 05.01.2023 18:21

И только iframe не сжимается? Пробовали ли вы тестировать сайт, например, на giftofspeed.com/gzip-test? Таким образом, мы можем исключить любую другую ошибку :) Например, я знаю, что иногда после активации сжатия необходимо перезапустить сервер. @ФрансискоРомеро

Ashendale 05.01.2023 18:26

Я предполагаю, что вы пытались с помощью htaccess имитировать предполагаемое поведение cPanel при выборе Compress All Content, верно?

Francisco Romero 05.01.2023 18:26

Точно, это была моя идея, по крайней мере. Я подумал, что это может стоить попробовать :)

Ashendale 05.01.2023 18:28

@FranciscoRomero Я действительно нашел эту информацию: «Некоторые оптимизации, такие как кэширование браузера и сжатие GZIP, могут применяться только к файлам, размещенным на вашем сервере. Вы не можете контролировать ресурсы, размещенные на других серверах». Это означает, что я был неправ, и вы на самом деле не можете сжимать фреймы из Amazon, что имеет смысл, когда я думаю об этом. Когда я пробовал это, я размещал свой собственный iframe, и, конечно же, это сработало. Извините, что дал вам дезинформацию!

Ashendale 05.01.2023 19:16

В этом есть смысл, почему он не работал с iframes Amazon, потому что виджет загружается со своего сервера (с URL-адреса https://ws-eu.assoc-amazon.com/widgets/...). Что мне интересно, так это то, что такая компания, как Amazon, не оптимизирует такого рода вещи, которые сделают сайты, у которых есть свои URL-адреса, быстрее, поэтому они получат больше трафика. Я ожидаю, что это будет решение для решения этой проблемы: / Спасибо за всю вашу помощь!

Francisco Romero 05.01.2023 23:37

Да, очень странно, что такая огромная компания, как Amazon, не будет предоставлять сжатую информацию об iframe для своих партнеров. У меня есть идея, что, возможно, они не могут проверить информацию о браузере через iframe и не могут определить, поддерживает ли браузер сжатие или нет, и, может быть, поэтому они вместо этого подают ее всем без сжатия? Может быть поэтому... Но это всего лишь догадка. Не беспокойся, рад, что смог хоть немного помочь. :)

Ashendale 06.01.2023 16:43

Это имело бы смысл, что они не хотят рисковать из-за ненужных «ошибок» при сжатии, но я не хочу думать, что нет возможности оптимизировать это. Я знаю, что есть плагины, которые избегают этого, потому что они используют API и не используют iframe, но вам нужно как минимум 3 продажи в месяц, чтобы получить доступ к API (если я не ошибаюсь).

Francisco Romero 07.01.2023 13:45

Эшендейл Я, наконец, отметил ответ @Hari E как принятый и дал ему награду, потому что с его решением я исправил почти 100% ошибки. Я даю вам голос, потому что вы также помогли мне прояснить сжатие текста. Спасибо за помощь! :)

Francisco Romero 11.01.2023 21:03

Рад, что вы наконец нашли решение! 😊 Спасибо за плюс.

Ashendale 12.01.2023 06:10
Ответ принят как подходящий

Вы можете добавить ленивую загрузку в свой 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, которые все еще загружаются? Спасибо!

Francisco Romero 10.01.2023 19:27

Если вы все еще хотите увеличить скорость страницы, вам нужно использовать методы сжатия, такие как Gzip или Brotli. Но оба эти метода сжатия предназначены для файлов js, cs и html. Я не думаю, что мы можем реализовать это на фреймах

Hari E 10.01.2023 19:40

Если приведенный выше код помогает, пожалуйста, отметьте его как ответ :)

Hari E 10.01.2023 19:42

Да, @Ashendale указал, что сжатие невозможно, потому что оно выполняется на стороне сервера, поэтому невозможно сжать файлы, размещенные снаружи. И, конечно же, я отмечу его как принятый, если никто не добавит ответа, который исправит все фреймы.

Francisco Romero 10.01.2023 20:48

Привет, Хари Э., я отметил ваш вопрос и дал награду, потому что ваш ответ помог мне решить почти 100% ошибок iframe. Я хотел бы исправить 100%, но хорошо... это хорошее улучшение. Большое спасибо за Вашу помощь!

Francisco Romero 11.01.2023 21:01

Спасибо, что отметили это как ответ. Если я найду другие способы улучшить его, я добавлю еще один ответ здесь. :)

Hari E 12.01.2023 07:44

Другие вопросы по теме