Кеширование внешних файлов на PHP
Оптимизируя и ускоряя свой сайт по рекомендациям Google, я столкнулся с одним нюансом: не настроено кэширование некоторых внешних файлов (таких как счетчики статистики, реклама и прочее). Как же можно кэшировать то, что не находится на твоем сервере?
Вариант один – скачать к себе эти файлы. Правда, возникает другая проблема: если таковых файлов, например, 10, то нам нужно каждый день мониторить их актуальность. Ведь если, к примеру, Яндекс.Метрика обновит свой скрипт, а на вашем сайте будет его старая версия, то, следовательно, статистика с вашего сайта будет собираться некорректно или не будет собираться вообще.
Чтобы все это наладить, я предлагаю вам следующее решение.
1. Необходимо настроить PHP скрипт, который будет делать всю работу за вас. Создайте файл, например import.php, и поместите в него следующее содержимое:
<?php
function dl_file($url_file, $save_to) {
$get_content = file_get_contents($url_file);
file_put_contents($save_to, $get_content);
}
dl_file('https://mc.yandex.ru/metrika/watch.js', realpath("./save_file") . '/metrika.js');
?>
Здесь нас интересует следующая строчка:
где:
1 – ссылка на файл, который нужно скачать к нам на сервер;
2 – папка для сохранения;
3 – название файла, которое будет задано при копировании на наш сервер.
Если вам нужно загрузить несколько файлов, то копируете эту строчку, вставляете ниже и заполняете нужными вам данными.
2. После того как скрипт настроен, загрузите его в корень вашего сайта по FTP. После чего здесь же создайте папку save_file (обратите внимание – на папке должны стоять права записи 777/755).
3. Далее вам нужно настроить crone (он же планировщик заданий), который вы сможете найти в панели управления своим хостингом. В нем вам нужно указать ссылку на ранее заказанный скрипт и настроить время запуска, например, каждые 12 часов.
4. Остается прописать новые адреса для файлов на вашем сайте. Если раньше адрес на Яндекс.Метрику был https://mc.yandex.ru/metrika/watch.js, то теперь он будет /save_file/metrika.js.
Вот таким несложным способом мы с вами научились кэшировать внешние файлы, тем самым ускорив работу сайта.