Артём Мáлков

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

19 янв7 комм

Оптимизируя и ускоряя свой сайт по рекомендациям 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.

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

Рекомендуем к просмотру
Включаем сжатие текста и кэширование статических файлов на хостинге Ru-Center
Статьи и советы
Минификация (сжатие) JS- и CSS-файлов на PHP
Модули и скрипты
Настраиваем кэширование файлов и GZIP-сжатие на сайте в Nginx
Статьи и советы
7
комментариев
Форма комментирования этого поста скрыта. Авторизуйтесь, чтобы расширить привилегии гостевого посещения и получить необходимую помощь от сообщества Pandoge.
    • 1
    3
      •  Пользователь
    3 дек в 16:25

    а как такой скрипт кешировать?

    //api-maps.yandex.ru/2.0-stable/?load=package.full&lang=ru-RU&onload=fid_vsebaz

    • 1
    766
      •  Гости
    17 сен в 20:01

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

    Обязательно воспользуюсь данной инструкцией.

    • 6
    1067
      •  Команда Pandoge
    28 фев в 13:52

    fifty, Обратная связь в разработке. Поможем. Напишите нам Вконтакте. В сообщении укажите адрес сайта, хостинг (название) и дальше уже постараемся помочь вам. Или можете задать здесь интересующие вас вопросы

    • 2
    766
      •  Гости
    28 фев в 12:13

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

    • 12
    1067
      •  Команда Pandoge
    20 фев в 14:44

    Дмитрий, пришлите пожалуйста полный код который вы используете. На какой CMS пытаетесь это реализовать?

    • 1
    766
      •  Гости
    20 фев в 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) {'

    • 6
    1067
      •  Команда Pandoge
    19 янв в 14:11

    Статья будет полезна тем, у кого уже настроено кэширование внутренних фалов

Подняться наверх
«Pandoge» - помощник вебмастера