Аватар пользователя B.X

Avida est periculli...

Avida est periculli virtus. — Доблесть жаждет опасности.

Top.Mail.Ru Каталог webplus.info Яндекс.Метрика

Пользователей онлайн: 0.

«Они считали чувство вины ошибкой, а угрызения совести — слабостью. Они всегда были практичны и никогда — сентиментальны. Но дружба их не имела границ.»

Минимальное время жизни кеша в Друпал (5.0) | [Харзах]-[РУ]

Аватар пользователя B.X

Что значит эта настройка в Друпале на странице Производительности? Так как текст под этой настройкой не столько проясняет ситуацию, сколько несколько её запутывает. В настройках присутствуют параметры начинающиеся с "нет" и заканчивающиеся "одним днём".

После поиска информации на официальном сайте Друпала, я решил просто провести тесты. Итак, что будет если мы выберем "нет"? Отвечаем: сайт будет обновляться сразу же, после появления новой информации.

Что будет, если выбрать "одну минуту" и далее, до "одного дня"? Отвечаем: сайт будет обновляться (то есть новая добавленная информация будет видна незарегистрированным пользователям), через такой промедуток времени.

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

Если же выбрать параметр "нет", то кэш должен обновляться каждый раз при добавлении новой информации (контента, комментариев и тд.), но он не обновляется, если изменения происходят с самим контентом (например, инклюд меняющейся информации через пхп). Это может создать проблемы, если нужно, чтобы подобная информация постоянно обновлялась. Система кэша Друпала просто не видит и не знает, что происходило обновление, если это было сделано не через механизмы самого Друпала, а сторонними решениями.

Тут и видны, как мне кажется, две проблемы с кэшем Друпала. Если обновлять слишком часто - это не очень хорошо по производительности, но позволяет отдать пользователям самый свежий контент, пусть и с некоторым опозданием. А вот если обновлять кэш при каждом добавлении контента, то если контент не добавляется пользователями, то и гости сайта увидят свежий контент, через достаточно большой период.

Есть два модуля, которые одинаково хорошо справляются с этими проблемами, но не подходят при решении проблем с вставкой работающего пхп-кода (быть может не всего, а именно того, который вставлен у меня на сайте). Модули известные, для блоков - это Block Cache, а для страниц и документов - это CacheExclude. Но первый имеет гораздо больше настроек и вообще более продуман, хотя во втором и так всё понятно, он просто исключает некоторые страницы их кэша.

Поэтому, пока виден только один вариант вышеописанной проблемы, это периодически самостоятельно обновлять кэш (либо по крону написать скрипт), что, как мне кажется, решит этот вопрос окончательно. Да и вообще, странно, что разработчики сами до этого не додумались. Ведь настройка "нет"+"обновлять через какое-то время" - это самое идеальное решение из всех возможных.

Скрипт написать несложно, так как API есть и даже существуют модули, которые очищают кэш периодически. Но я мне проще было сделать это на манер крона, убрав ненужное... по тестам, работает, как на самом деле - проявится со временем. Скрипт прилагаю. Небольшое объяснение, что делать с этим файлом? Ничего особенного. Закачать его в корень Друпала и назначить выполнение по крону (на любом нормальном хостинге - есть).