vasilenko.info

Use browser cache for Google PageSpeed

Tools 98 comments

Use cache for third-party resources
promo44 tools for websitesGenerators, converters, and checkers — everything runs in your browser.Open

For those who have optimized a website using recommendations from Google PageSpeed Insights and ran into the issue of being unable to cache JavaScript scripts from third-party websites.

In essence, this is not such an important optimization metric. It is like moving CSS and JS elements from the site header to the footer, even though Google itself has issues with this item 🙂

Still, you or your clients may want to optimize the caching of third-party scripts. Or perhaps you want to see a nice number in the analyzer counter, especially since optimization will only take a few minutes.

What we will cover today:

Browser cache for your own assets

First, let’s set up caching for our own scripts. For this example, let’s look at the blog Devaka.ru (at the time of writing)

  • https://devaka.ru/assets/copyright.min.js (no expiration date specified)
  • https://devaka.ru/assets/i/566.jpg (no expiration date specified)
  • https://devaka.ru/assets/i/icons.png (no expiration date specified)
  • https://devaka.ru/assets/i/postcomm-left.png (no expiration date specified)
  • https://devaka.ru/assets/i/postcomm-right.png (no expiration date specified)

To fix this issue, open the .htaccess file and add this code at the very bottom:


# сжатие text, html, javascript, css, xml:
<ifModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/plain text/xml application/xml application/xhtml+xml text/css text/javascript application/javascript application/x-javascript
</ifModule>

# кеш браузера
<ifModule mod_expires.c>
ExpiresActive On

#по умолчанию кеш в 5 секунд
ExpiresDefault "access plus 1 days"

# Включаем кэширование изображений и флэш на месяц
ExpiresByType image/x-icon "access plus 1 month"
ExpiresByType image/jpeg "access plus 4 weeks"
ExpiresByType image/png "access plus 30 days"
ExpiresByType image/gif "access plus 43829 minutes"
ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds"

# Включаем кэширование css, javascript и текстовых файлоф на одну неделю
ExpiresByType text/css "access plus 604800 seconds"
ExpiresByType text/javascript "access plus 604800 seconds"
ExpiresByType application/javascript "access plus 604800 seconds"
ExpiresByType application/x-javascript "access plus 604800 seconds"

# Включаем кэширование html и htm файлов на один день
ExpiresByType text/html "access plus 43200 seconds"

# Включаем кэширование xml файлов на десять минут
ExpiresByType application/xhtml+xml "access plus 600 seconds"

# Нестандартные шрифты сайта 
ExpiresByType application/x-font-ttf "access plus 1 month"
ExpiresByType font/opentype "access plus 1 month"
ExpiresByType application/x-font-woff "access plus 1 month"
ExpiresByType image/svg+xml "access plus 1 month"
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
</ifModule>
promoTools instead of manual workForty-four generators, converters, and checkers—all running in your browser.View all

After that, you can test your website in the Page Speed tool. If everything is correct, only links to Yandex.Metrica, analytics, social networks, and so on should remain.

If there are links to unknown domains, your site may have been hacked and malicious scripts inserted (redirects, subscriptions, etc.). To prevent this from happening again, remove suspicious code from the template.

Examples of third-party scripts

If you completed the first step correctly, you should see a list similar to this:

Use browser cache for the following resources

  • https://apis.google.com/js/api.js (30 minutes)
  • https://apis.google.com/js/platform.js (30 minutes)
  • https://mc.yandex.ru/metrika/watch.js (60 minutes)
  • http://www.google-analytics.com/analytics.js (2 hours)
  • http://code.jivosite.com/script/widget/NuT1gBLsC6 (no expiration date specified)
  • https://static.doubleclick.net/instream/ad_status.js (15 minutes)
  • https://connect.facebook.net/ru_RU/all.js (20 minutes)
  • https://an.yandex.ru/system/context.js (60 minutes)
  • https://pagead2.googlesyndication.com/pagead/js/adsbygoogle.js (60 minutes)
  • https://pagead2.googlesyndication.com/pagead/osd.js (60 minutes)
  • https://disqus.com/next/config.js (60 seconds)
  • And so on.

You may only have a few URLs for Metrica and analytics, for example, but that is not important. The solution is the same for all of them.

Cache for third-party assets

Originally, I wanted to write an article about this point only, but I expect there will be many questions. Now, to the point.

We cannot affect the cache duration of a third-party website, but we can do it within our own website. The most logical approach here is to automatically download the latest Metrica, analytics, and other scripts to your website using cron (the script is included).

Let’s go through it step by step.

Step 1. Copy the list of all scripts shown by Google PageSpeed into a text editor, or copy them directly from the browser.

Step 2. Create a file with the php extension on your hosting and paste the following code into it:

promoTools instead of manual workForty-four generators, converters, and checkers—all running in your browser.View all

<?php

function downloadJs($file_url, $save_to)
{
    $content = file_get_contents($file_url);
    file_put_contents($save_to, $content);
}

// Указываем URL, затем папку от корня сайта и имя файла с расширением.
// Проверьте чтобы на папке были права на запись 777/755
// Метрика
downloadJs('https://mc.yandex.ru/metrika/watch.js', realpath("./js") . '/watch.js');

// Google Analytics
downloadJs('http://www.google-analytics.com/analytics.js', realpath("./js") . '/analytics.js');

// Для скриптов без расширения
downloadJs('http://code.jivosite.com/script/widget/NuT1gBLsC6', realpath("./js") . '/NuT1gBLsC6');

?>

Note the function call:

There are 3 in the code as examples, but you can create as many as needed. Just copy and paste them below, or remove the unnecessary ones.

Change 3 values in this line:

Edit

1. The script that will be downloaded to your website

2. The path where the file will be saved:

In my case, this is the js folder, meaning the exact path to it will be vasilenko.info/js/ (you need to create the folder yourself and grant it CHMOD write permissions)

3. The script name. If it has the .js extension, include it. If it has no extension or a different one, do everything as in the example above. Make sure there are no files with identical names.

Step 3. Upload the edited file to the server

Then open the direct link, for example https://vasilenko.info/downloadjs.php, if you did everything correctly, the required file/files will be in the JS folder (or the folder you specified in the file).

Required files

Step 4. Add the file to cron for automatic file updates

To avoid services working incorrectly if they make changes to their scripts, cron will automatically access and update them on your server.

Open your hosting control panel, select the CRON tab, enter the command, and set the schedule to once an hour, once a day, or any other interval.


wget -q -O - /dev/null https://vasilenko.info/downloadjs.php >/dev/null 2>&1

Do not forget to change the URL. Your command syntax may also differ, so check the cron command examples in your hosting documentation or contact technical support.

Step 5. Change the JS path in the counter or script

If the path in the counter was https://mc.yandex.ru/metrika/watch.js, replace it with a path within your website, for example https://vasilenko.info/js/watch.js

That’s it. You should no longer see browser cache configuration messages in the PageSpeed Insights list.

If you have questions, ask them in the comments!

/en/pagespeed-cache/ Tools

promoROI calculatorCalculates campaign return on investment right in the browser, with no registration required.Open

Comments (98)

The discussion was moved with the post: the dates and authors are the same as before. New comments aren't accepted on archived posts.

  1. Сергей FreeThinker

    Ох не думаю я, что геморрой с дополнительной нагрузкой на сервер и подключением крона стоит того, чтобы скачивать себе сторонние скрипты. Тем более для большинства из них время жизни указано. Не спроста же сам Google для своих скриптов ставит время жизни 30-60 минут — значит так надо.

    А внутри сайта время жизни можно указать лишь добавив в конце url знак вопроса с любым параметром — хоть внутри css, хоть в блоке вызова. Например:
    icons.png?0
    Is.js?o

  2. Alex V author

    На счет нагрузки, только что с примера выше взял все скрипты (11 штук) и отследил программно время выполнения php скрипта, результат: Скрипт выполнялся 2.4809 сек. От того что cron будет «кушать» 2 секунды раз в день, ничего страшного не будет.

    Тем более у большинства скриптов явно меньше, если это коммерция, то только метрика, аналитика +/- пару скриптов. В этом случаи скрипт выполнялся за 0.5981 сек.

    > для своих скриптов ставит время жизни 30-60 минут

    Можно и крон ставить на столько 🙂 Но, я ставлю на раз в сутки, полет нормальный.

    > А внутри сайта время жизни можно указать лишь добавив в конце url знак вопроса с любым параметром

    Вот этого не знал, спасибо. Правда если устанавливаешь новый плагин, то сразу нужно вносить правку в вызов скрипта, легче раз код прописать в htaccess и спать спокойно.

  3. Сергей FreeThinker

    ОК, напишу по-другому: если уж такие асы оптимизации, как wikimart, ozon, да и сам Google (проверь хотя бы https://www.google.com/webmasters/ или тот же https://developers.google.com/speed/pagespeed/insights/ !) не парятся по поводу времени жизни (читай «кеша») сторонних источников, то простым смертным тем более не стоит заморачиваться. 🙂

  4. Alex V author

    Так и есть, это как пузомерки на сайтах, вроде не кому сейчас не нужны, но все приятно когда они растут. Так и тут с анализом после проверки в зеленой зоне.

  5. Yura Yevtikhov

    Здравствуйте! Сделал всё, как описано выше. В папке /js создаются файлы скриптов (папка-755, скрипты-644), но они пустые, а при вызове downloadjs.php выдает ошибку «Warning: file_get_contents(https://www.google-analytics.com/analytics.js): failed to open stream: Connection timed out in /home/uХХХХ/public_html/downloadjs.php on line 5″. Может потому, что сайт на https?
    Буду благодарен за ответ, поскольку php не владею.

  6. Yura Yevtikhov

    Разобрался. Нужно указывать адрес https://google-analytics.com/analytics.js

  7. Alex V author

    Видимо у себя что-то поменяли, раньше с www работало.

  8. Yura Yevtikhov

    Но появилась новая фишка: «Включите сжатие для следующих ресурсов, чтобы уменьшить объем передаваемых данных на 15 КБ (58 %).

    Сжатие страницы https://XXXXXXXXX.XXX/js/analytics.js уменьшит ее размер на 15 КБ (58 %).», хотя на сайте и сервере сжатие включено. Возможно при скачивании можно указать сжатие?

  9. ONE

    Спасибо большое! Очень годная статья!

  10. kirpich

    Для тех, у кого WordPress 4+ можно в functions.php прописать такой код, который будет качать скрипты метрики и гугл аналитикс на Ваш сайт. Плюс этого варианта в том, что не нужно трогать крон на хостинге, т.к. работать будет встроенный в WordPress крон. Т.е. и сайт перенести будет проще на другой хост и другие важные мелочи приятные.

    //Закачка скриптов по крону
    add_action('wp', 'my_activation');
    function my_activation() {
        if( ! wp_next_scheduled( 'js_scripts_download' ) ) {
            wp_schedule_event( time(), 'daily', 'js_scripts_download'); //закачивать скрипты раз в сутки
        }
    }
    add_action('js_scripts_download', 'downloadJs');
    function downloadJs($file_url=", $save_to=") {
        if(!empty($file_url) && !empty($save_to)){
        $content = file_get_contents($file_url);
        file_put_contents($save_to, $content);
        } else {
        downloadJs('https://mc.yandex.ru/metrika/watch.js', $_SERVER['DOCUMENT_ROOT'] . "/js_s/watch.js" ); //путь и имя для скачиваемого скрипта яндекс-метрики на Ваш сайт.
        downloadJs('https://google-analytics.com/ga.js', $_SERVER['DOCUMENT_ROOT'] . "/js_s/ga.js" ); //путь и имя для скачиваемого скрипта гугл аналитикс на Ваш сайт.
        }
    }
    

    Т.е. теперь скрипты будут качаться раз в сутки и они будут у Вас всегда в актуальном состоянии.
    Не забудьте, что в html-коде нужно изменить адрес с yandex.ru на ваш_домен.ru/js_s/watch.js
    Для гугл аналитикса всё точно также будет, нужно поменять пути.
    Делов, на самом деле, 10-15 минут.
    —-

    А также весьма полезным будет дерегистрировать все js-скрипты, а потом заново их регистрировать и сувать именно в подвал, это создаст у посетителя ощущение того, то сайт быстро грузится.
    Первым из скриптов будет jQuery, а потом него ПОСЛЕДОВАТЕЛЬНО будут подгружаться остальные скрипты по важности по убыванию.

    Скажу так. Страница моего сайта коммерческого открывается за 800 миллисекунд.
    Та же страница, но на мобильной версии, генерируется иногда даже за 500 миллисекунд.

    По Google PageSpeed Insights набирает 100/100 баллов по всем показателям.

    Имейте в виду, что этот форум обрезал ссылки и добавил в конце ссылки апостроф ‘
    Поэтому прежде чем запускать скрипт, поправьте это всё
    Всего всем хорошего.

  11. Alex V author

    Спасибо, хороший способ!

  12. Crypto Rotator

    Подскажи, через какое время после установки кода, закачает скрипты, а то страницу периодически обновляю — пустая папка для закачки

  13. kirpich

    Во-первых, вряд ли скачает, если ты ЗАЛОГИНЕН в админке.
    Во-вторых, скрипт настроен на раз в сутки.

  14. Crypto Rotator

    ну-ну, какая разница, кто обновит станицу ))) не работает код твой короче

  15. kirpich

    Не работает? Ок. Я удалил код, чтобы никто не наткнулся на него, он весь такой неправильный и только у меня на двух сайтах работает.

  16. Crypto Rotator

    ну вообще-то давно уже есть куча плагинов, которые выполняют PHP код повремени, имитируя Cron, твой код не работает в самой последней версии WordPress. версия PHP 5.6

  17. Pavel Mankov

    Здравствуйте!
    Перенёс скрипт к себе на сайт (https://mc.yandex.ru/metrika/watch.js). Теперь инспектор кода показывает кучу ошибок. Видимо в скрипте есть запросы к файлам, которых нет у меня на сайте.

  18. Aliexpress на русском

    Не стоит так делать, во первых все кешируется хоть и гугл ругается, во вторых будут проблемы со статистикой. А в третьих гугл ругает только на то что малое время кеширования да и только.

  19. Александр Чумаков

    всем привет предлагаю бесплатный тренинг открытия магазина
    прибыль 100000 р в месяц https://goo.gl/r5i8oV

  20. Роман Крамар

    Так понимаю, Ваш код с этим поможет

    Объяснение:

    Используйте кеш браузера для следующих ресурсов: (developers.google.com/speed/docs/insights/L…)

    toursector.org.ua/wp-content/gallery/foto_m… (не указан срок действия)

    toursector.org.ua/wp-content/gallery/foto_m… (не указан срок действия)

    toursector.org.ua/wp-content/gallery/foto_m… (не указан срок действия)

  21. Роман Крамар

    И такого 172 штуки, все jpg

  22. Роман Крамар

    Почему спрашиваю. У вас в описании кода это «# сжатие text, html, javascript, css, xml:» а вот jpg, png код сожмет )

  23. Alex V author

    Не сжимает, а кеширует. Для картинок есть правило:

    ExpiresByType image/jpeg «access plus 4 weeks»
    ExpiresByType image/png «access plus 30 days»

    Если у вас не работает этот код, обратитесь в службу поддержки хостинга

  24. Сергей Грицков

    А если в скрипте используется относительная адресация на файлы размещённые на том же сервере? После копирования скрипта себе на сервер он ведь не сможет найти те файлы, так как уже будет искать их у нас, а не на том сервере с которого его скопировали.
    Я конечно не силён в работе с js-скриптами, но разве я не прав?

  25. Рома Шкабко

    Если кому нужно, можете подключать эти JS (обновляются каждый день)
    https://static.flamix.info/cron/js/analytics.js (гугл)
    https://static.flamix.info/cron/js/watch.js (яндекс)

    На своем сайте сделал, добился 100% оптимизации — https://ru.flamix.software/
    Может оно и не надо, но мне приятно 🙂

  26. Galina Rampova

    спасибо!!! яндекс с гуглом ушли. а живосайт продолжает писать 24 часа и гугл pagespeed на это продолжает ругаться. до этого на живосайт ругался тк вообще не было срока действия. сейас 24 часа. подскажите как можно увеличить, чтобы ошибка совсем ушла?

  27. Alex V author

    Так же само поставьте скрипт jivosite на крон

  28. Galina Rampova

    так и сделал :-))) но гугл ругается именно на файл сохраненый кроном на моем сайте.
    Пишет, что ему 24 или 48 часов осталось всего.

  29. Alex V author

    Настройки в htaccess эти прописаны?

    ExpiresByType text/javascript «access plus 604800 seconds»
    ExpiresByType application/javascript «access plus 604800 seconds»
    ExpiresByType application/x-javascript «access plus 604800 seconds»

  30. Galina Rampova

    да, прописан. но именно этот js от живосайта никак не поддается почему-то 🙁

  31. Рома Шкабко

    Ссылки также доступны и по https

  32. Sergey Lidoff

    отличная статейка)

  33. Александр Шмаков

    Здравствуйте Александр!
    Спасибо за столь логичное решение. Ваша статья очень помогла мне достичь 100 из 100 в Google Page Speed https://seovedenie.ru/

  34. Вилы Выкидные

    Не нужно ничего скачивать никакими кронами, просто отшиваем юзерагента PageSpeed Insights в области кода, где у нас аналитика установлена, ггы..

    тут вставляем код гугл аналитики и (или) яндекс метрики

    радуемся, аве мне 🙂

  35. Антон Кулявец

    Спасибо большое, супер расписано. Но есть проблема.
    https://vk.com/fonts/opensans300.woff (не указан срок действия)
    https://vk.com/fonts/opensans400.woff (не указан срок действия)
    https://vk.com/fonts/opensans600.woff (не указан срок действия)
    https://vk.com/fonts/opensans700.woff (не указан срок действия)
    А в скрипте только путь к js, как с этим бороться?

  36. Alex V author

    Что за скрипт? Нужно посмотреть, отпишите через форму контактов

  37. mozilaFFF

    Были 2 ошибки
    https://mc.yandex.ru/metrika/watch.js
    https://static.doubleclick.net/instream/ad_status.js
    Все сделал по инструкции, в футере, где подключал метрику заменил путь к своему сайту и ошибка исчезла.
    Но никак не пойму где и как поменять путь, чтоб исчезла вторая ошибка. Скрипт создается, но его сайт не подхватывает, как я понимаю и берет данные по старому пути.

    P.S. на сайте стоит All in one seo pack вроде в нем чет похожее нашел (но это не точно)

  38. Alex V author

    Если грешите на плагин какой-то, отключите его и посмотрите исчезла ошибка или нет. Как обнаружите плагин проблемный, уже в коде копайте.

  39. Дмитрий Давыдов

    Привет! Классная статья, с удовольствием прочитал) Перенес тут вчера файлы в облачное хранилище, установил заголовки, а гугл все равно ругается:
    developers.google.com/speed/pagespeed/insig…

    Но сторонний тест говорит, что с заголовками все хорошо:
    bertal.ru/index.php?…

    И кому верить?)

  40. Денис Михайлович

    Супер скрипт!
    У меня jivo не загружается, ошибку выдает Uncaught Error: Failed to evaluate the widgetId or configHost
    Как ты его победил?

  41. Григорий Ефремов

    Добрый день. Не появляются файлы в папке /js и куда то пропал jivosite с сайта. Вроде все правильно делал

  42. Григорий Ефремов

    Хотя Гугл Пэйдж спид на файлы ругаться перестал. Вот не знаю, теперь работает ли вообще аналтика…

  43. Андрей Сиротин

    Большое спасибо за отличную статью. Небольшой вопросик.
    Как быть с такого рода кодом:
    На сайте выведена карта google
    maps.googleapis.com/maps/api/js?…

    Как именно здесь нужно поступить?

  44. big_jacky

    Похоже действительно на PHP 5.6 не работает. Пол года над у себя запускал — работало. Сейчас хостинг перешёл на новую версию РНР — перестало работать.

  45. Administrator

    Александр, сталкивались ли лично с закачкой на сайт JS скриптов VK и FB?
    В первую очередь интересует FB. Скорее всего этот номер с соц сетями не пройдёт.
    В первую очередь интересует https://connect.facebook.net/en_US/sdk.js

  46. Olya

    Добрый день. Не работает фейсбук и незнаю как гугл карты апи вписать. Есть у кого решеные?

  47. Ренат Зайдуллин

    Спасибо! Отличная статья, пригодилась. Единственно не разобрался с кодом JivoSite — на хостинг он скачивается, но у него нет расширения. Какую конструкцию для него правильно написать в htaccess (что-то вроде ExpiresByType или еще как). А то теперь на него гугл ругаться стал
    … /nrDybLg3YO (24 часа) И кстати да, на сайте тоже отображаться консультант перестал.

  48. Ренат Зайдуллин

    И для яндекс.карт тоже не разобрался 🙁
    api-maps.yandex.ru/2.0/?… (5 минут)

  49. Alex

    Откройте консоль и смотрите на ошибки там

  50. Yan Inoy

    Выдаёт 403 ошибку You don’t have permission to access downloadjs.php on this server. Наверное я что-то не так сделал?

  51. Сергей Федотов

    Все отлично работает, но Jivosite отказывается работать.
    Выдает —
    Uncaught Error: Failed to evaluate the widgetId or configHost

    Стоит какая-то защита от запуска js на стороне сервера.

  52. Павел Свирский

    Спасибо! Ценная инфа, пригодилась.
    Сделал кэш браузера по Вашему методу через htaccess только для своих картинок (jpg, gif, png) . Остальное (скрипты, css , сторонние скрипты) не трогал. Этого уже оказалось более чем достаточно. Скорость поднялась, PageSpeed Insights теперь показывает в пределах 86…93 из 100 (было 70…78 из 100).

    Единственное, не совсем понял. Вот если у меня была картинка на странице с именем например image1.jpg , кэш браузера у нас на 30 дней сохраняется, а я на следующий день эту картинку видоизменил (т.е. под image1.jpg у меня уже другой рисунок). Что тогда произойдет у пользователей , которые зашли вчера и автоматом закешировали себе image1.jpg (старое изображение), когда они зайдут завтра — что они увидят — старое изображение или новое ?
    Пробовал у себя — ГуглХром упорно показывает старую картинку , сколько ни нажимай кнопку «обновить» , а Яндекс-браузер сам сразу обновил картинку. Не понимаю, от чего это зависит.

    Может, нет смысла кешировать на 30 дней, а ставить 2 или 3 дня (если картинки часто меняются на сайте под тем же именем) ?

  53. Angry Bird

    Спасибо за ценную информацию! Этот Гугл со своими требованиями уже достал, честно говоря….

  54. Дмитрий Кандауров

    Все прикольно, Но некоторые моменты не ясны:
    1) // Указываем URL, затем папку от корня сайта и имя файла с расширением. (Оставляем так же???
    // Проверьте чтобы на папке были права на запись 777/755???
    // Метрика???
    downloadJs('https://mc.yandex.ru/metrika/watch.js', realpath("./js") . '/watch.js');
    

    2)Ставим файл на крон для автоматического обновления файлов. Совсем не понятно)

  55. Julia Randall

    Спасибо, очень пригодилось!

  56. Alexandr Ostryanin

    спасибо, код для .htaccess очень помог.

  57. Илья

    Добрый день!
    Вторая часть почему-то не работает.
    Создал каталог oblomow.ru/js/ и положил в него файл dw.php
    Содержание файла как у вас:

    Обращаюсь к этому файлу и ничего не происходит.
    Права у каталога и у файла 777
    Подскажите, пожалуйста, чём может быть дело?

  58. Роман

    Доброго времени суток!
    Делаю все так, как описано про файл .htaccess
    Сначала все норм. PageSpeed перестает ругаться на то, что не указан срок действия и т.д.., но уже примерно через сутки двое вновь делаю проверку в PSpeed — история повторяется!
    Не могу понять почему так? Причем преимущественно для изображений.

  59. Сергей Морозов

    не работает

  60. Nazerke Shaldanbaeva

    Все сделала как описано про кеширование сторонних ресурсов, но Pspeed все равно выдает на них рекомендации.

  61. Nazerke Shaldanbaeva

    В самом скрипте менять ничего не надо?

  62. Игорь Рекуненко

    А у Вас что, изображения берутся с чужих сайтов?

  63. Игорь Рекуненко

    работает. Вы что-то не так сделали или не сделали 🙂

  64. Игорь Рекуненко

    Ссылки на скрипты сменили на локальные?
    В самом скрипте ничего менять не нужно, нужно сменить адреса к скриптам, которые показывает PageSpeed

  65. Nazerke Shaldanbaeva

    Да, ссылки изменила, до этого другой способ пробовала, тоже не работал, странно все 🙁

  66. Игорь Рекуненко

    Напишите мне в ФБ, через часик-полтора буду за компом, посмотрим вместе

  67. Игорь Рекуненко

    У меня все получилось сделать, остался один единственный скрипт, который грузится по результату работы другого скрипта.

  68. Nazerke Shaldanbaeva

    Ок)

  69. Игорь Рекуненко

    Вопрос для знатоков: не могу настроить крон. Просто не отрабатывает 🙁

  70. Стас

    А как заменить путь для сайтов на вордпресс? если оно генерится с помощью плагинов

  71. Sergiy Antonyuk

    Все получилось!
    Огромное спасибо.
    Чувствуется, что статью писал ПРОФИ-ПРАКТИК 🙂

  72. Владислав Золотарёв

    При настроенном кэшировании, Вы увидите старую картинку, пока срок кэширования не истекёт. В Яндекс браузере у Вас видимо не включена поддержка кэширования. Гугл минимальным требует срок кэширования 1 неделю, ставьте её, если не уверены, что можно ставить более длительный срок.

  73. Владислав Золотарёв

    Почему не использовать код, как у меня, в чём отличие Вашего кода?

    SetOutputFilter DEFLATE
    ExpiresActive on
    ExpiresDefault «access plus 1 week»
    Header set Cache-Control «private, must-revalidate»

  74. Владислав Золотарёв

    так какой смысл, если они будут всё равно со стороннего веб-адреса? )

  75. Vladyslav Tarasenko

    поставил, как велела инструкция, после проверки через firebug, вижу, что google analytics блокируется, и что при проверке аудита сайта, не находится google метрика.

  76. Rina Savran

    Спасибо! Отличная статья, работает

  77. Little Pony

    Да, но мне кажется что это не самое главное для Гугла

  78. Hakan Pehlivan

    Вообщем не работает Используйте кеш браузера и сжатие в google page speed проверял.
    Файл .htaccess выглядит следующим образом:
    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index.php$ — [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    # BEGIN WordPress

    RewriteEngine On
    RewriteBase /
    RewriteRule ^index.php$ — [L]
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteRule . /index.php [L]

    ExpiresActive On
    #по умолчанию кеш в 5 секунд
    ExpiresDefault «access plus 5 seconds»
    #кэшировать флэш и изображения на месяц
    ExpiresByType image/x-icon «access plus 2592000 seconds»
    ExpiresByType image/jpeg «access plus 2592000 seconds»
    ExpiresByType image/png «access plus 2592000 seconds»
    ExpiresByType image/gif «access plus 2592000 seconds»
    ExpiresByType application/x-shockwave-flash «access plus 2592000 seconds»
    #кэшировать css, javascript и текстовые файлы на одну неделю
    ExpiresByType text/css «access plus 604800 seconds»
    ExpiresByType text/javascript «access plus 604800 seconds»
    ExpiresByType application/javascript «access plus 604800 seconds»
    ExpiresByType application/x-javascript «access plus 604800 seconds»
    #кэшировать html и htm файлы на один день
    ExpiresByType text/html «access plus 43200 seconds»
    #кэшировать xml файлы на десять минут
    ExpiresByType application/xhtml+xml «access plus 600 seconds»

    AddOutputFilterByType DEFLATE text/plain text/html
    AddOutputFilterByType DEFLATE text/xml application/xml application/xhtml+xml application/xml-dtd
    AddOutputFilterByType DEFLATE application/rdf+xml application/rss+xml application/atom+xml image/svg+xml
    AddOutputFilterByType DEFLATE text/css text/javascript application/javascript application/x-javascript
    AddOutputFilterByType DEFLATE font/otf font/opentype application/font-otf application/x-font-otf
    AddOutputFilterByType DEFLATE font/ttf font/truetype application/font-ttf application/x-font-ttf

    Как исправить?

  79. Max Sokol

    Та же проблема. Все сработало, кроме
    https://static.doubleclick.net/instream/ad_status.js

    В этом файле всего одна строчка
    window.google_ad_status = 1;

    Подозреваю что путь создается в каком-то другом js, но не смог пока найти.

  80. vicsk

    Здравствуйте, при запросе файла downloadjs.php выдает 403 Forbidden, права какие только не устанавливал

  81. Gran Torino

    автор забыл указать, что использование файла htaccess актуально для серверов на Appache, для других это не будет работать

  82. AdminAndrey

    бредовый парсер, скопипастили а сами не знают как работает

    «»

    вот простейший парсер, вешайте на крон и все ок

  83. Михаил Мелихов

    А как прописать на ngnix кеширование файла «NuT1gBLsC6» какое указать расширение?
    сейчас стоит на расширения:
    location ….
    expires max….

  84. Artem Pavliienko

    А как закешировать гугл карту? PageSpeed Insights выдает ссылки, например: google.com/maps/vt?…

  85. Владимир

    Совет с размещением гугл скриптов (аналитики той же) у себя на сайте сомнителен. Если проверить, к примеру свой сайт сервисом https://tools.pingdom.com/#!/cxNdPH/https://comatele.com то видно, что скорость загрузки именно таких скриптов в разы выше, чем со своего сервера, плюс преимущество уменьшения запросов (к своему серверу). А так получаем, что в угоду мифическому показателю скорости от Google PageSpeed мы теряем реальную скорость загрузки. Вопрос что лучше? Пока без ответа

  86. admirus

    А у меня требует картинки (24 часа).

  87. Andrew

    Сделал всё. Но как только указал путь к js у меня перестала работать карта 2гис + гугл аналитик и Я.метрика

  88. Yerokhov Konstantin

    Автору следует обновить следующий код для загрузки по протоколу https:

    function downloadJs($file_url, $save_to)
    {
    	$arrContextOptions=array(
        "ssl"=>array(
            "verify_peer"=>false,
            "verify_peer_name"=>false,
        ),
    );
        $content = file_get_contents($file_url, false, stream_context_create($arrContextOptions));
        file_put_contents($save_to, $content);
    }
    // Указываем URL, затем папку от корня сайта и имя файла с расширением.
    // Проверьте чтобы на папке были права на запись 777/755
    //Для загрузки по протоколу https
    downloadJs('https://static.doubleclick.net/instream/ad_status.js', realpath("./js") . '/ad_status.js');
    
  89. Александр

    а нужно ли обновлять эти js файлы? Может пусть так будут? Иногда просто самому в ручную загружать

  90. Crystal Crystal

    Если был путь в счетчике https://mc.yandex.ru/metrika/watch.js, то заменяем его на путь внутри сайта, например https://vasilenko.info/js/watch.js
    А можно относительный путь писать? есть ли смысл?

  91. Ivan Pruchai

    Рискуете получить слабую работоспособность + обзавестись лишней работой, которую система и так может делать самостоятельно.

  92. Артем Рашин

    Никак, используйте https://maps.googleapis.com/maps/api/js. Он прорисовывает карту в нужный вам блок после загрузки html. А вот сам скрипт уже скачиваете к себе как автор написал и кэшируете. Ответ поздний конечно, но может кому пригодится.

  93. RomanMorenets

    Для jivosite данный способ не работает. Я подозреваю, что идёт проверка со стороны сервера разработчика на каком хосте запускается скрипт. Если на стороннем, то выполнение блокируется(

  94. Анатолий Коновалов

    жуткое приложение

  95. Анатолий Коновалов

    все что с ней можно сделать — вставить в самый низ, или написать свою форму, не делаю, потому как уже полгода собираемся поменять дизайн сайта

  96. Анатолий Коновалов

    после всевозможных блокировок уже актуально….

  97. Sergey Matunin

    Поддерживаю, попробовал, поглядел на реальную скорость отработки — вернул родные урлы файликов, переносить их к себе — плохая идея.

  98. Али Профи

    Как ни старайся, а 100 из ста не получишь, если только так поломать свой сайт, что там почти ничего работать не будет. Скорость важна, но не настолько, чтобы убиваться из-за каждого скрипта.