Этот сайт существует на доходы от рекламы.
Пожалуйста, выключите AdBlock.
Вернуться   Форум об интернет-маркетинге > >
Ответ
 
Опции темы
Старый 07.02.2019, 19:17   #1
Академик
 
Регистрация: 28.06.2008
Сообщений: 6,642
Репутация: 388955

По умолчанию Функция очистки кеша Nginx

Кода 3-4 назад кодер делавший мне сайт написал мне функцию очистки кеша только одной нужной мне в данный момент страницы.
Я ей активно пользуюсь и она работала. Только что заметил что работать перестала. Когда - не знаю.
Вот код самой функции:
Цитата:
/**
* Функция очистки кеша Nginx
*
* CommentsHelperQuery::clearCache('http(s)://*');
*
* @param string $value
* @return
*/
function clearCache($value)
{
jimport('joomla.filesystem.file');

if(!empty($value))
{
$data = parse_url($value);
$filename = md5('GET|site.ru|'.$data['path']);

JFile::delete('/var/cache/nginx/site/'.substr($filename, -1).'/'.substr($filename, -3, 2).'/'.$filename);

return true;
}
return false;
}
}
Подскажите мне как хотя бы начать проверять где ошибка?

В конфиге nginx для этого сайта прописано:
Цитата:
fastcgi_cache_path /var/cache/nginx/site levels=1:2 keys_zone=med:10m max_size=2048m inactive=24h;
Dram на форуме   Ответить с цитированием

Реклама
Старый 07.02.2019, 19:25   #2
Оптимизайка
Академик
 
Аватар для Оптимизайка
 
Регистрация: 11.03.2012
Адрес: 127.0.0.1
Сообщений: 4,276
Репутация: 598083

По умолчанию Re: Функция очистки кеша Nginx

А libnginx-mod-http-cache-purge чем не устраивает?

https://docs.nginx.com/nginx/admin-g...#purge_request
__________________
BotGuard ⭐ — защита вашего сайта от вредоносных ботов, воровства контента, клонирования, спама и хакерских атак!
Оптимизайка вне форума   Ответить с цитированием
Старый 07.02.2019, 20:13   #3
Dram
Академик
 
Регистрация: 28.06.2008
Сообщений: 6,642
Репутация: 388955

ТопикСтартер Re: Функция очистки кеша Nginx

Хотелось бы починить то что уже работает. Я нашел где лежит кеш нужной для очистки страницы -
Цитата:
/var/cache/nginx/site/c/04/d840acd78808e4dfb8c50bc20eb1c04c
Dram на форуме   Ответить с цитированием
Старый 07.02.2019, 20:24   #4
Оптимизайка
Академик
 
Аватар для Оптимизайка
 
Регистрация: 11.03.2012
Адрес: 127.0.0.1
Сообщений: 4,276
Репутация: 598083

По умолчанию Re: Функция очистки кеша Nginx

Dram, а перезапустить nginx после "очистки" пробовали? Например опция у nginx "sendfile on" может держать файловый дескриптор.
Оптимизайка вне форума   Ответить с цитированием
Старый 07.02.2019, 20:28   #5
Dram
Академик
 
Регистрация: 28.06.2008
Сообщений: 6,642
Репутация: 388955

ТопикСтартер Re: Функция очистки кеша Nginx

Если я перезапущу nginx - весь кеш ведь сбросится. А мне нужно только одну страницу почистить.

В админке сайта кодер мне сделал поле куда я вставлял полный урл той страницы которую нужно почистить и нажимал кнопку очистки кеша - и кеш этой страницы чистился.

Сейчас нажимаю, он мне пишет типа кеш очищен, но в реальности не чистит.
И по ftp я смотрю - файл кеша этой страницы на месте,не удаляется.

P.S. sendfile on присутствует в конфиге. Но файл то не удаляется

---------- Добавлено 07.02.2019 в 20:58 ----------

Я попробовал вывести на страницах сайта такой код:
Цитата:
<?php
$data = parse_url($value);
$filename = md5('GET|site.ru|'.$data['path']);
$fileput = ('/var/cache/nginx/site/'.substr($filename, -1).'/'.substr($filename, -3, 2).'/'.$filename);
echo $fileput;
?>
На нужно странице вывелось
Цитата:
/var/cache/nginx/site/6/23/98c7fc89f48fe6b25f0a8da545d98236
Но меня смущает что на всех других страницах выводит точно такой же путь

А на echo parse_url($value); выдает - Array

Последний раз редактировалось Dram; 07.02.2019 в 21:03..
Dram на форуме   Ответить с цитированием
Старый 07.02.2019, 21:45   #6
Оптимизайка
Академик
 
Аватар для Оптимизайка
 
Регистрация: 11.03.2012
Адрес: 127.0.0.1
Сообщений: 4,276
Репутация: 598083

По умолчанию Re: Функция очистки кеша Nginx

Цитата:
Сообщение от Dram Посмотреть сообщение
Если я перезапущу nginx - весь кеш ведь сбросится.
С чего бы это, он кешированные страницы в файлах хранит.
Оптимизайка вне форума   Ответить с цитированием
Старый 17.02.2019, 11:16   #7
danforth
Программист
 
Аватар для danforth
 
Регистрация: 18.12.2015
Адрес: Одесса
Сообщений: 1,002
Репутация: 169358

По умолчанию Re: Функция очистки кеша Nginx

Цитата:
Сообщение от Оптимизайка Посмотреть сообщение
libnginx-mod-http-cache-purge
На последних версиях Nginx это доступно только для владельцев коммерческой подписки.
У вас проблема с построением хеша для урла.

Попробуйте сделать
Код:
	fastcgi_cache_key ваш_домен.com$request_uri;
А в скрипте подобрать такой-же ключ через переменные, будет что-то вроде ваш_домен.com . $_SERVER['REQUEST_URI']

Я правда не помню, request_uri начинается со слеша или нет.

После этого сделайте то-же самое что и ваш прогер, от получившегося хеша с конца нужно сначала один символ потом два взять, и потом результирующий хеш - это и будет ваш файл со страницей.
danforth на форуме   Ответить с цитированием
Старый 17.02.2019, 11:18   #8
Dram
Академик
 
Регистрация: 28.06.2008
Сообщений: 6,642
Репутация: 388955

ТопикСтартер Re: Функция очистки кеша Nginx

Я нашел уже ошибку и все починил. Я мучал общий конфиг, а в конкретном конфиге сайта тоже была расписана схема хеширования и она отличалась от общей.
Dram на форуме   Ответить с цитированием
Старый 17.02.2019, 16:56   #9
Оптимизайка
Академик
 
Аватар для Оптимизайка
 
Регистрация: 11.03.2012
Адрес: 127.0.0.1
Сообщений: 4,276
Репутация: 598083

По умолчанию Re: Функция очистки кеша Nginx

Цитата:
Сообщение от danforth Посмотреть сообщение
На последних версиях Nginx это доступно только для владельцев коммерческой подписки.
Оно в стандартных репах debian.
Оптимизайка вне форума   Ответить с цитированием
Ответ




Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход



Текущее время: 15:21. Часовой пояс GMT +3.

Регистрация Справка Календарь Поддержка Все разделы прочитаны