Генератор устойчивых к взлому паролей
Артем Мáлков
565 просм
5 комм
Поделиться

Кеширование внешних файлов на 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');
?>

Здесь нас интересует следующая строчка:

Кеширование внешних файлов на PHP

где:

1 – ссылка на файл, который нужно скачать к нам на сервер;
2 – папка для сохранения;
3 – название файла, которое будет задано при копировании на наш сервер.

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

2. После того как скрипт настроен, загрузите его в корень вашего сайта по FTP. После чего здесь же создайте папку save_file (обратите внимание – на папке должны стоять права записи 777/755).

3. Далее вам нужно настроить crone (он же планировщик заданий), который вы сможете найти в панели управления своим хостингом. В нем вам нужно указать ссылку на ранее заказанный скрипт и настроить время запуска, например, каждые 12 часов.

Кеширование внешних файлов на PHP

4. Остается прописать новые адреса для файлов на вашем сайте. Если раньше адрес на Яндекс.Метрику был https://mc.yandex.ru/metrika/watch.js, то теперь он будет /save_file/metrika.js.

Вот таким несложным способом мы с вами научились кэшировать внешние файлы, тем самым ускорив работу сайта.

5
комментарий
Статья будет полезна тем, у кого уже настроено кэширование внутренних фалов
  • 0
Дмитрий
20.02 в 11:31
Сделал все как написано, выдает ошибку
/home/srv..../ht.../import.php: line 1: syntax error near unexpected token `('
/home/srv.../ht.../import.php: line 1: `<?php function dl_file($url_file, $save_to) {'
  • 0
Дмитрий, пришлите пожалуйста полный код который вы используете. На какой CMS пытаетесь это реализовать?
  • 0
fifty
28.02 в 12:13
не могли бы помочь с установкой? и кстати у вас обратная связь не работает
  • 1
fifty, Обратная связь в разработке. Поможем. Напишите нам Вконтакте. В сообщении укажите адрес сайта, хостинг (название) и дальше уже постараемся помочь вам. Или можете задать здесь интересующие вас вопросы
  • 0
Оставить комментарий:
Нажимая кнопку «Отправить» вы даете согласие на обработку своих персональных данных.
Ваше Имя
Ваш E-mail
Текст комментария