Добавьте этот код на ваш сайт:
/**
* Remove Help Tabs
*/
add_action( 'admin_head', function () {
$screen = get_current_screen();
// Remove all tabs
$screen->remove_help_tabs();
}
);
Добавьте этот код на ваш сайт:
/**
* Remove Help Tabs
*/
add_action( 'admin_head', function () {
$screen = get_current_screen();
// Remove all tabs
$screen->remove_help_tabs();
}
);
Пакет: jpegoptim — утилита для оптимизации/сжатия файлов JPEG.
Jpegoptim может оптимизировать/сжимать файлы JPEG. Уменьшение размера без потерь основано на оптимизации таблиц Хафмана. Так называемое сжатие с потерями (компрессия) осуществляется повторным кодированием изображения, с указанным пользователем уровнем качества изображения.
Пакет: optipng — утилита оптимизации сжатия изображений PNG.
OptiPNG сжимает файлы PNG поочерёдно с разными параметрами и останавливается на параметрах, дающих минимальный размер. Для этого она пробует уменьшить глубину цвета (без потерь качества), изменить способ записи информации о цвете и палитру изображения. Также распознаются такие форматы как BMP, GIF, TIFF и PNM (PBM, PGM, PPM).
sudo apt update -y && sudo apt install jpegoptim optipng -y
После установки в ОС пакетов выберите директорию с изображениями и запустите оптимизацию формата JPEG
cd /path/to/your/image/folder
find . -iname "*.jp*" -print0 | xargs -0 jpegoptim --strip-all -m76
find . -iname '*.png' -print0 | xargs -0 optipng -o7 -preserve
СУБД MySQL или MariaDB ведёт специальное логирование всех запросов к базам данных, которое пишется в файлы приведённые на скриншоте ниже.
Как можно заметить их число и размер может отжирать приличное пространство на вашем диске, в моём случае это примерно 20Гб! Это случилось потому, что в MySQL 8 срок действия этого журнала изменений в базе по умолчанию составляет 30 дней.
Эти файлы играют важную роль и необходимы для правильной работы репликации данных или восстановления информации.
Если у вас не настроено никакой репликации ии никакое сторонне приложение не читает эти логи, не отслеживает их, то в принципе не вижу смысла отдавать дисковое пространство для этих файлов.
В моём случае моя СУБД используется просто для хранения данных разных сайтов — то есть ничего хитрого, поэтому я и задался вопросом удаления этих файлов.
Первым делом нам нужно зайти в оболочку нашей СУБД, например, сделать это можно так:
mysql -u root -p
Если вы всё сделали правило, то непременно должны увидеть в консоли следующее:
Теперь введите в консоли следующую команду для просмотра бинарных логов:
SHOW BINARY LOGS;
Также можно воспользоваться командой-синонимом SHOW MASTER LOGS
.
Я отключил ведение логов, поэтому в моём случае вывод такой:
Вероятно, что в вашем случае будет отображаться тот самый список файлов из /var/lib/mysql
Пример вывода:
mysql> SHOW BINARY LOGS;
+---------------+-----------+-----------+
| Log_name | File_size | Encrypted |
+---------------+-----------+-----------+
| binlog.000015 | 724935 | Yes |
| binlog.000016 | 733481 | Yes |
+---------------+-----------+-----------+
Обратите внимание на их нумерацию, для того чтобы удалить файлы до определённого можно воспользоваться командой:
PURGE BINARY LOGS TO 'binlog.000015';
Изменения можно внести через консоль. Мы будем менять binlog_expire_logs_seconds
— отвечает за установку срока действия двоичного журнала в секундах. По истечении срока файлы логов будут автоматически удалены.
Срок действия двоичного журнала по умолчанию составляет 2592000 секунд = 30 дней. Соответственно, мы можем это изменить:
SET GLOBAL binlog_expire_logs_seconds = (60*60*24*3);
SET PERSIST binlog_expire_logs_seconds = (60*60*24*3);
Сделайте в консоли запрос:
SHOW VARIABLES LIKE '%expire_logs%';
Вы должны увидеть значение системной переменной binlog_expire_logs_seconds.
mysql> SHOW VARIABLES LIKE '%expire_logs%';
+-------------------------------+--------+
| Variable_name | Value |
+-------------------------------+--------+
| binlog_expire_logs_auto_purge | ON |
| binlog_expire_logs_seconds | 259200 |
| expire_logs_days | 0 |
+-------------------------------+--------+
3 rows in set (0.01 sec)
Можно установить новое значение сразу в секундах (выше мы делали это путём умножения сек*мин*часы*дни),а могли бы указать сразу числом.
Откройте в редакторе файл /etc/mysql/my.cnf
sudo nano /etc/mysql/my.cnf
и добавьте пару строчек:
[mysqld]
skip-log-bin
Чтобы изменения вступили в силу перезапустите MySQL сервер:
sudo service mysql restart
так же через этот файл можно ограничить размер файлов логов и задать автоматическую очистку (ограничение)
[mysqld]
binlog_expire_logs_seconds = 86400 # 1 day
max_binlog_size = 104857600 # 100M
P.S. не забывайте перезагружать сервер вашей СУБД
systemctl restart mysql или systemctl restart mariadb
Поиск файлов размером более 500 Мб по всей файловой системе:
nice find / -size +500M -exec ls -lhs {} \; 2>/dev/null
для удобства можно отсортировать файлы от большего к меньшему:
nice find / -size +500M -exec ls -lhs {} \; 2>/dev/null | sort -rh
Если у вас слишком много файлов, то можно ограничить вывод, например, до 5
nice find / -size +500M -exec ls -lhs {} \; 2>/dev/null | sort -rh | head -n5
Так же можно воспользоваться утилитой du
(аббревиатура от англ. disk usage) — стандартная Unix-программа для оценки занимаемого файлового пространства.
Чтобы вывести список 10 самых больших файлов из директории /var воспользуйтесь решением ниже:
du -h /var | sort -nr | head -n10
По командам выше часть синтаксиса с реверсивной сортировкой и ограничением вывода вам известна. В примере я так же добавил параметр -h для того чтобы размер выводился в более читабельном, понятном виде, так как по умолчанию размер занимаемого пространства выводится в байтах.
Следующая команда распечатает 10 самых больших файлов в вашем текущем каталоге (т.е. в котором её запускаете):
du -ahx . | sort -rh | head -10
Тут я ещё добавил пару опций для удобно читаемого формата вывода.
Вот простой пример для минимального вывода корневых директорий текущего местоположения (вызова) и их занимаемый общий размер:
du -shc * | sort -hr
Команда lscpu
позволяет вывести информацию о процессорах, присутствующих в системе, включая количество процессоров, их архитектуру, производителя, семейство, модель и т. д. Для этого введите в командной строке:
lscpu
Вывод в консоли:
По сути утилита lscpu
берёт информацию об архитектуре процессора из sysfs, /proc/cpuinfo и отображает в более удобном для пользователя виде.
Любопытства ради можно посмотреть этот файл указав в консоли следующее:
nano /proc/cpuinfo
Важно понимать, что полностью полагаться на эту информацию не стоит, так как иногда, в некоторых случаях, данные могут быть неверными.
В Nginx существует встроенная переменная $upstream_cache_status модуля ngx_http_upstream_module, которая хранит статус доступа к кэшу ответов. Статус может быть одним из
В случае правильной работы сервера в ответе из кэша должно находится значение “HIT”, но как это проверить?
Первым делом вам нужно добавить специальный заголовок, который будет в ответе сервера возвращать значение переменной $upstream_cache_status:
Открываем конфигурационный файл Nginx ( /etc/nginx/nginx.conf ) и добавляем строчку, к блоку бэкенда:
add_header FastCGI-Cache $upstream_cache_status;
Например, так:
Проверить заголовки ответа можно в браузере. Если ответ получен из кэша вы непременно увидите статус HIT
В WordPress существует специальный Экран библиотеки медиафайлов, который можно назвать медиатекой.
Именно сюда попадают загружаемые на ваш сайт файлы и располагаются в хронологическом порядке — свежие вначале.
Добавить новый медиафайл можно при помощи этих кнопочек:
После загрузки ваш файл отобразится на Экран библиотеки медиафайлов:
Помимо файлов изображений можно загружать PDF, видео, аудио форматы и прочие.
Можно просматривать файлы в виде простой визуальной сетки или списка со столбцами. Выберите желаемый вид с помощью иконок слева над файлами.
Важно учитывать! Что после загрузки изображения WordPress делает его копии и в итоге получаем не одно, а несколько изображений:
Это происходит потому что по умолчанию в WordPress заданы параметры для нарезки копий изображения с целью оптимизации. Представьте, если вы загрузили большое изображение весом 5-10 мб, то сколько оно будет загружаться при слабом Интернет-соединении у пользователя, мм? Ну и в плане дизайна, дизайнер может требовать строгую обрезку для сохранения вида своего макета.
Настройка этих размеров доступна в разделе Настройки > Медиафайлы
Если поставить значение «0» ширине и высоте, то нарезка не будет осуществляться. Например, средний размер можно выключить. Это позволит сэкономить не мало дискового пространства при объемных загрузках изображений.
В некоторых случаях изображений может создаваться значительно больше. На моей практике встречалось и 10 нарезок, то есть грузим одно, а получаем на диске 10-11 картинок. Это зависит от дополнительных функций, которые могут находиться в теме и плагинах вашего сайта. Функция называется add_image_size() — она регистрирует (для будущего создания при загрузке) новый размер картинки (миниатюры).
В режиме просмотра таблицы (столбцом) при наведении указателя на строку в списке отображаются ссылки действий, позволяющие управлять элементом. Вы можете выполнить следующие действия:
Нас интересует ссылка Удалить навсегда
А в режиме сетки, чтобы удалить изображение, нужно сперва кликнуть на изображение, а затем удалить этот файл:
При первом способе мы сделали на один клик меньше и в режиме отображения таблицы есть еще одно преимущество — массовое удаление файлов. То есть выбираем файлы которые нужно удалить и затем действие, которое применится к ним.
После удаления происходит полное удаление копий изображения, т
Выбираем ссылку Изменить и далее заполняем поле для альтернативного текста
В момент загрузки нужно выделить ваш элемент изображения и справа в его настройке блока будет это поле:
Учтите, что загружая изображение через редактор Записи или Страницы оно автоматически прикрепляется к ней и также будет доступно в общей медиатеке.
Теперь разница между изображениями в том, что загружая через редактор в Записи оно прикрепилось к ней, а при загрузке из раздела Медиафайлов — нет.
Если медиафайл не прикреплён ни к одной записи, вы увидите это в столбце «Загружен для» и если нажать на ссылку «Прикрепить», то откроется всплывающее окно, в котором можно найти нужную запись и прикрепить к ней файл.
После прикрепления картинку можно будет сразу находить в Библиотеке путем сортировки «Загруженные для этой Записи»
Ну вот и всё, надеюсь после этого ознакомления работа с медиафайлами будет вызывать у вас меньше вопросов 🙂
Для начало попробуйте воспользоваться в консоли командой
nginx -v
или
sudo nginx -v
Ответ в консоли:
nginx version: nginx/1.26.0
Для получения расширенной информации укажите заглавную букву «V» (вывод версии nginx, версии компилятора и параметров конфигурации сборки)
sudo nginx -V
Ответ в консоли:
nginx version: nginx/1.26.0
built by gcc 10.2.1 20210110 (Debian 10.2.1-6)
built with OpenSSL 1.1.1n 15 Mar 2022 (running with OpenSSL 1.1.1w 11 Sep 2023)
TLS SNI support enabled
configure arguments: --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --modules-path=/usr/lib/nginx/modules --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp ...
Для просмотра списка всех запущенных процессов nginx может быть использована утилита ps
:
ps -ax | grep nginx
Ответ в консоли:
699 ? Ss 0:00 nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf
149300 ? S 2:26 nginx: worker process
149301 ? S 0:00 nginx: worker process
149302 ? S 0:00 nginx: worker process
149303 ? S 0:01 nginx: worker process
149304 ? S 0:00 nginx: cache manager process
158423 pts/0 S+ 0:00 grep nginx
Текущий статус работы мы также можем посмотреть при помощи команды
sudo systemctl status nginx
Если всё хорошо и служба работает, то вы непременно должны увидеть подобный сигнал
ну и напоследок , чтобы убедиться в работе нашего Nginx можно в консоли отправить следующий запрос
curl localhost
Если всё правильно работает, то по идее вы должны получить в ответ страницу приветствия в виде HTML:
По умолчанию (сразу после установки чистой версии) в WordPress, в его редакторе блоков Gutenberg мы можем наблюдать давно желанную функцию увеличения изображения по клику без перенаправления, то есть оставаясь на той-же странице.
Добиться этого можно путём выделения нужного изображения и клика по ссылке. Учтите, что выбрав блок Медиа и Текст вы не обнаружите эту возможность (проверял на версии: 6.5.3), вам будет доступно только прикрепления оригинала изображения.
Ниже вы можете наблюдать последовательность прикрепления файла изображения к его миниатюре:
После этого оригинал изображения будет открываться по клику на миниатюру.
Этот трюк, вернее эта возможность доступна с одиночным медиафайлом. Вот я вставляю в контент страницы картинку-миниатюру и повторяю те же самые действия: вначале выделяю её, а потом кликаю на иконку закрепления за этим изображением ссылки
И вот тут-то мы можем наблюдать нужную нам функцию! Она называется Развернуть при нажатии
Выбрав её, наше изображение будет открываться во всплывающем окне, тем самым не перескакивая со страницы на отдельный URL, об этом свидетельствует «крестик» при помощи которого мы можем свернуть обратно наше изображение
Но как же быть, если нам необходимо чтобы текст обтекал изображение справа? Для этого мы можем воспользоваться другим блоком, который называется Колонки
И уже с его помощью реализовать задуманное. Оба изображения из примера ниже будут открываться в лайтбоксе.
Теперь рассмотрим ещё один пример на основе галереи. Вначале добавим блок Галереи на нашу страницу:
После этого загрузим (или выберем из библиотеки файлов) нужные нам изображения и выделив всю галерею справа в её настройках укажем в качестве ссылки Медиафайл.
Что получится? Да то же самое что и в самом первом случае — изображения будут открываться в новых URL . Чтобы задействовать наш лайтбокс нужно присвоить эту функцию каждому изображению в галереи:
Теперь изображения миниатюр галереи будут открываться в лайтбоксе.
Неправильные разрешения к файлам могут привести к неожиданным последствиям, вот одна из них:
Для того чтобы это исправить или не допустить нужно выставить правильные права.
Все каталоги (директории) должны быть 755 или 750
Все файлы должны иметь права 644 или 640. Исключение: wp-config.php должен иметь номер 440 или 400, чтобы другие пользователи сервера не могли его прочитать.
Ни одному из каталогов никогда не следует присваивать номер 777, даже каталогам предназначенным для загрузки.
sudo find . -type f -exec chmod 644 {} +
sudo find . -type d -exec chmod 755 {} +
sudo chmod 440 wp-config.php
sudo chown -R www-data:www-data /var/www/mysite
Рассмотрим простой пример, когда из корня сайта мы при помощи WP CLI совершаем установку плагина и сразу, второй командой, меняем владельца всех файлов этого плагина
sudo wp plugin install woocommerce --allow-root
sudo chown -R www-data:www-data ./wp-content/plugins/woocommerce
Это можно было бы сделать немного эстетичней, например, запустив команду сразу под нужным пользователем:
sudo -u www-data wp plugin install woocommerce
Добро пожаловать в консоль WordPress!
Консоль — это первое место, куда вы попадаете каждый раз, когда входите на свой сайт.
По умолчанию (сразу после установки WordPress) на экране «Консоль» доступны следующие блоки:
Добро пожаловать — отображает ссылки на задачи, наиболее часто выполняемые при создании нового сайта.
Состояние здоровья сайта — сообщает о потенциальных проблемах, которые стоит решить для улучшения производительности и безопасности вашего сайта.
На виду — отображает краткий отчёт о содержимом вашего сайта, включая тему оформления и версию WordPress.
Активность — показывает запланированные и недавно опубликованные записи, а также самые свежие комментарии с возможностью их модерировать.
Быстрый черновик — позволяет создать новую запись и сохранить её как черновик. Также выводит 3 последних черновика, созданных вами.
Новости и мероприятия WordPress — Предстоящие мероприятия рядом с вами, а также свежие новости официального проекта WordPress и WordPress Planet.
Для того чтобы скрыть или показать эти блоки нужно воспользоваться разделом Настройки экрана, который доступен справа в верхней части экрана :
Теперь нужно отметить те виджеты (блоки) которые вы предпочитаете скрыть
Готово! Теперь наш экран стал чистым!
Эта технология позволяет создавать лёгкие версии страниц, которые открываются быстро даже при медленном подключении к интернету.
Подробно о турбо-страницах можно почитать по ссылке выше,а мы сразу перейдем к делу 🙂
Ваш сайт должен уже быть подключен к Яндекс Вебмастер. Далее, переходим по этой ссылке. Подключение Турбо-страниц в Вебмастере.
В WordPress уже существует генерация rss-фида, но как мы видим он не соответствует требованиям разметки от Яндекс. Самым простым и быстрым методом будет подключение и создание специального фида через плагин.
Официальный сайт (ссылка в начале поста) предлагает ряд бесплатных решений:
Не вижу причин для отсутствия в этом списке ещё одного решения — плагина Яндекс.Турбо (Автор: Flector), но мы его установим через стандартный интерфейс установки плагинов в CMS WordPress:
В принципе на этом всё. Выше в окне настроек плагина вы можете видеть ссылки на специальную разметку. В моём случае первая ссылка выглядит вот так:
https://codeispoetry.ru/feed/turbo
Всё зависит от общего количество записей на вашем сайте и их разбивке. По умолчанию это значение равно 50. Следовательно, если у вас 500 записей, то в итоге вы получите 10 ссылок по 50 записей в каждой.
Теперь осталось добавить их в разделе Яндекс Вебмастер, который мы рассматривали ранее.
После добавления вполне возможно вы можете увидеть предупреждения или ошибки валидации, но это не расстраивайтесь — это поправимо.
Для выявления ошибок нужно перейти в режим отладки:
Далее, прямо в окне постарайтесь исправить разметку и снова перепроверить исправленную версию. В итоге, при правильной корректировке вы должны добиться результата «Без ошибок»
Учтите, что эти изменения просто для выявления ошибок и не для их устранения, то есть что бы исправить ошибки нужно перейти на сайт и постараться через настройки плагина устранить их.
В моём случае валидатор ругался на тег <header>
. Я просто исключил этот тег в разделе фильтров:
Это можно было исправить и другим способом. Ошибка была связана с содержимом тега [CDATA[]] найдены закодированные символы
Можно исправить сам тег, например взять его в специальный тег code — это будет правильным решением.
После этого можно убедиться в исходном коде фида на его отсутствие и затем повторить валидацию:
Готово!
Учтите, что в режиме ВКЛ (фид включен) валидация пройдёт не сразу.
Проверка фида может занимать продолжительное время. Наберитесь терпения. Сам Яндекс оповещает о том, что обычно проверка занимает около 2 часов.
Во включенном состоянии переобход источника и перестроение примеров Турбо-страниц в поиске происходит раз в час.
Яндекс Вебмастер
Часто встречающиеся ошибки RSS-канала
А пока что, если у вас сайт подключен к Яндекс Метрики, то рекомендуется указать ваш счётчик чтобы не утратить аналитику за счет подключения технологии турбо-страниц.
Рекомендую посетить эту страничку.
Так же номер счётчика можно указать и в специальном разделе для настройки Турбо-страниц, который именуется Веб-аналитика:
Раздел доступен в разделе Настройки:
Заходим в раздел Настройки -> Общие
Рекомендуется добавлять квадратное изображение разрешением 512 на 512 пикселей, так как его нарезка будет использоваться на разных устройствах.
Значок сайта который Вы видите во вкладках браузера, строке закладок, и внутри мобильных приложений WordPress. Он должен быть квадратной формы с разрешением не менее
официальная рекомендация из панели управления WordPress512 × 512
пикселей.
rsync — быстрая и гибкая программа, позволяющая копировать файлы на/с удалённых машин.
Программа широко используется для создания резервных копий и зеркал, а также в качестве улучшенной версии команды cp.
Задача: скопировать всю директорию (включая все файлы) размером более 50ГБ с удаленного сервера под управлением Debian/Ubuntu.
Решение: Воспользуемся утилитой rsync. Подробная информация.
Общий синтаксис команд достаточно простой.
rsync [ОПЦИИ...] ОТКУДА... [КУДА]
Pull (получение):
rsync [ОПЦИИ...] [USER@]HOST:ОТКУДА... [КУДА]
Push (отправка):
rsync [ОПЦИИ...] ОТКУДА... [USER@]HOST:КУДА
Следуя этим схемам давайте выполним нашу поставленную задачу.
rsync --archive --verbose --progress -e "ssh -p 22888" root@00.000.00.000:/var/www/site/ ~/newsite/public_html
Данная команда скопирует всё содержимое директории /var/www/site/ удалённой машины в домашнюю директорию пользователя /newsite/public_html текущей машины (с которой осуществлялось подключение).
Данный пример рассматривает подключение по нестандартному ssh порту 22888 (по умолчанию 22-ой).
Опции:
При неуверенности запускайте в пробном режиме, при котором ничего не произойдёт, а только утилита продемонстрирует в консоли свою работу, но файлы скопированы не будут. Для этого нужно добавить опцию —dry-run
В таком случае наша консольная команда может выглядеть вот так:
sudo rsync --dry-run -azvv -e ssh /home/path/folder1/ ЮЗЕР@ХОСТ:/home/path/folder2
Подробнее о заголовке Last-Modified можно почитать тут. Пожалуй, для SEO добавлю описание:
HTTP заголовок Last-Modified
сообщает клиенту (браузеру, поисковому боту) время последнего изменения страницы (объекта). Если клиент получил заголовок Last-Modified
, то при следующем обращении к адресу, при условии, что страница (объект) есть в локальном кэше, он добавит заголовок-вопрос If-Modified-Since
(не изменилась ли страница после даты, полученной в Last-Modified
).
В свою очередь сервер, получив запрос If-Modified-Since
должен сверить полученную временную метку с временем последнего изменения страницы и, если страница не изменялась ответить 304 Not Modified
.
Last-Modified
на PHP в WordPress?В целом на официальном сайте уже существует реализация на PHP, которую остаётся немного адаптировать для WP.
// время последнего изменения страницы в формате unix time
$lastModified = strtotime('2022-06-18 19:01:58');
// дата последней загрузки, отправляемая клиентом
$ifModified = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'] ?? '', 5));
if ($ifModified && $ifModified >= $lastModified) {
// страница не изменилась, отдача http статуса 304
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
exit;
}
header('Last-Modified: ' . gmdate("D, d M Y H:i:s \G\M\T", $lastModified));
// дальнейшая загрузка страницы
Получаем время последнего изменения страницы, проверяем наличие If-Modified-Since
, если есть — отдаем 304 Not Modified
и останавливаем работу скрипта, иначе генерируем заголовок Last-Modified
и отдаем страницу.
Этот готовый код необходимо добавить в functions.php или через плагин. Я рекомендую добавлять этим методом.
/**
* Last-Modified and If-Modified-Since Headers
*/
add_action('wp', poet_'last_if_modified_headers' );
function poet_last_if_modified_headers() {
global $post;
if(isset($post)){
$LastModified_unix = strtotime($post->post_modified);
$LastModified = gmdate("D, d M Y H:i:s \G\M\T", $LastModified_unix);
$IfModifiedSince = false;
if (isset($_ENV['HTTP_IF_MODIFIED_SINCE'])) {
$IfModifiedSince = strtotime(substr($_ENV['HTTP_IF_MODIFIED_SINCE'], 5));
}
if (isset($_SERVER['HTTP_IF_MODIFIED_SINCE'])) {
$IfModifiedSince = strtotime(substr($_SERVER['HTTP_IF_MODIFIED_SINCE'], 5));
}
if ($IfModifiedSince && $IfModifiedSince >= $LastModified_unix) {
header($_SERVER['SERVER_PROTOCOL'] . ' 304 Not Modified');
exit;
}
header('Last-Modified: '. $LastModified);
}
}
Если вы используете в качестве веб-сервера Nginx , то есть вероятность столкнуться с проблемой отдачи заголовка. Всё дело в том, если у вашей конфигурации включена директива ssi
Модуль
https://nginx.org/ru/docs/http/ngx_http_ssi_module.htmlngx_http_ssi_module
— это фильтр, обрабатывающий команды SSI (Server Side Includes) в проходящих через него ответах.
Пример конфигурации при котором разрешается обработка команд SSI в ответах:
location / {
ssi on;
...
}
Следовательно, прицепом к этой директиве необходимо включить еще одну, которая по умолчанию выключена:
location / {
ssi on;
ssi_last_modified on;
}
Позволяет сохранить поле заголовка “Last-Modified” исходного ответа во время обработки SSI для лучшего кэширования ответов.
По умолчанию поле заголовка удаляется, так как содержимое ответа изменяется во время обработки и может содержать динамически созданные элементы или части, которые изменились независимо от исходного ответа.
Вот и всё 🙂
Обязательно перезапустите HTTP-сервер Nginx и протестируйте отдачу заголовка.
Внимание! Данный пример не гарантирует успешного запуска, так как конфигурации серверов зачастую требуют индивидуального подхода.
Вот правильная работа заголовка:
Выполняем последовательно действия при установке. Next
Принимаем условия и нажимаем Next
Это путь распаковки файлов программы. Ничего не меняем и нажимаем Next
Ничего не меняем и нажимаем Next
Важно! Нужно поставить галочку для установки дополнительных зависимостей в систему и нажимаем Next
Нажимаем Install
Начинается процесс распаковки (установки) файлов в систему
Чтобы начать установку дополнительных компонентов нужно в консоли нажать любую клавишу
После завершения установки проверьте версию Node.js и ее менеджера пакетов при помощи простых команд в консоли
node -v
npm -v
Поздравляю! На этом всё!