Modx очистить кэш вручную
MODX Revolution - это веб-приложение, данные которого находятся в базе данных. Поэтому переход на новый сервер (хостинг) будет включать в себя перенос не только всех файлов, но и информации, хранящейся в базе данных. Кроме этих действий необходимо будет ещё выполнить и некоторые другие действия, необходимые для корректного переноса сайта на MODX Revo.
Совет: Данные действия не являются обязательными. Но они могут вам помочь разобраться с проблемой неработоспособности сайта, которая может возникнуть после его переноса на новое место. Всё что вам необходимо выполнить - это выключить в менеджере MODX системный параметр "Использовать дружественные URL (friendly_urls)" и переименовать файл .htaccess в ht.access . А после переноса сайта на новое место и проверки его работоспособности, произвести обратные действия. Т.е. включить дружественные URL и переименовать файл ht.access в .htaccess .
Совет: Перед тем как переходить к покупке хостинга и переносу на него сайта, работающего под управлением MODX Revolution, убедитесь в том, что с ним не возникнет никаких проблем (например, он не поддерживает PDO или что-то другое). Проверит этот момент очень просто, т.к. любой хостинг предоставляет демонстрационный период для бесплатного тестирования. Всё что вам нужно, это поставить новую сборку MODX Revolution и проверить её работоспособность.
Программное (пользовательское) кэширование¶
Взаимодействуя с modCacheManager , вы можете легко кэшировать данные любого типа. Есть несколько полезных функций, которые вы можете использовать для поддержания рабочего кэша. Используя modCacheManager с пользовательским разделом (хотя и необязательно), пользователи вашего кода могут изменить обработчик кэша и сохранить данные в экземпляре memcached , APC или WinCache вместо файлового кэша по умолчанию.
ModCacheManager (производный от xPDOCacheManager ) предоставляет следующие полезные методы:
- add($key, $var, $life = 0, $options = array()) используется для добавления значения в кэш, но только если оно еще не существует или срок его действия истек.
- replace($key, $var, $life = 0, $options = array()) используется для замены существующего кэшированного значения другим.
- set($key, $var, $life = 0, $options = array()) используется для установки значения в кэш независимо от того, существует ли оно уже (перезаписывается) или нет (добавляется).
- delete($key, $options = array()) удаляет кэшированное значение из кэша.
- get($key, $options = array()) получает кэшированное значение из кэша.
- clean($options = array()) очищает (удаляет) весь поставщик кэша. Убедитесь, что вы определили xPDO::OPT_CACHE_KEY в массиве параметров.
В общем случае вы можете использовать get($key) и set($key, $value) для получения и установки значений соответственно, но дополнительные методы обеспечивают дополнительный контроль над способом управления данными.
Массив $options может содержать следующие параметры, указывающие раздел кэша для записи, используемый обработчик кэша и время истечения по умолчанию.
- xPDO::OPT_CACHE_KEY - раздел кэша для записи.
- xPDO::OPT_CACHE_HANDLER - используемый обработчик кэша. Как правило, вам не нужно жестко определять этот параметр, но имеет смысл разрешать конкретной реализации обрабатывать обработчик кэша с помощью системных настроек (то есть системных настроек cache_PARTITION_handler ).
- xPDO::OPT_CACHE_EXPIRES - время истечения по умолчанию.
Как кэширование организовано в MODX Revo
По умолчанию кэш в CMS MODX Revolution находится в файлах и расположен в директории core/cache/ .
Для обработки кэша в MODX используется провайдеры (по умолчанию: xPDOFileCache ). Файлы кэша в данном каталоге находится не в корне, они распределены по разделам.
Раздел - это кэш с данными определённого вида (например, ресурсами). Раздел можно представить как директорию в каталоге core/cache/ .
Разделы созданы не только для удобного представления различных данных кэша, но и для того, чтобы ими можно было управлять посредством различных провайдеров.
Например, одним разделам кэша можно назначить провайдер xPDOFileCache , а другим xPDOMemCache .
В MODX Revolution доступны следующие провайдеры: xPDOFileCache (по умолчанию), xPDOAPCCache (для Alternative PHP Cache), xPDOMemCache (для memcache), xPDOMemCached (для memcached), xPDOWinCache (для WinCache).
Поддержка того или иного кэшера (за исключением файлового xPDOFileCache ) зависит от хостинга и в основном предоставляется только тем, кто арендует виртуальный выделенный сервер.
Кэш менеджеры ( xPDOFileCache , xPDOAPCCache , xPDOMemCache , xPDOMemCached и xPDOWinCache ) являются производными от класса xPDOCache и предоставляют единую API для записи, чтения и удаления кэш записей.
Разделы основного кэша MODX¶
В ядре несколько разделов. Их можно легко определить, просмотрев папку core/cache/ с конфигурацией кэша по умолчанию.
Обычно вам не нужно работать с кэшированными данными напрямую (вместо этого используйте доступные API), но для понимания ядра MODX здесь мы рассмотрим основные разделы и кратко опишем их назначение и содержание.
Как мы обсудим позже, пользовательские провайдеры также могут быть использованы в разработке.
- action_map содержит большой массив всех действий (идентификаторов, ссылающихся на контроллеры и пространства имен), которые могут быть доступны в менеджере. Поскольку действия устарели и больше не используются в 2.3, никогда не полагайтесь на них.
- auto_publish содержит метку времени Unix, которая определяет, когда ресурс должен быть автоматически опубликован или распубликован (см. ModCacheManager.autoPublish() )
- context_settings для каждого контекста на сайте содержит карту ресурсов (идентификаторы родительских и дочерних документов), карту псевдонимов, используемые в контексте плагины и политики доступа.
- db раздел кэша базы данных используется, когда включена системная или контекстная настройка cache_db , и содержит необработанные наборы результатов для запросов xPDO getObject / getCollection . Подробнее об этом ниже.
- includes - на самом деле, это не раздел кэша, но он содержит файлы PHP, где сниппеты и плагины заключены в вызовы функций для легкого выполнения ядром. Смотрите сценарии для раздела кэша для сниппетов и плагинов.
- logs - это также не раздел кэша, но содержит файл error.log и иногда другие файлы журнала (например, журнал установки).
- menu cодержит для каждого языка менеджера многомерный массив верхнего меню менеджера.
- mgr не является настоящим разделом кэша, но используется Smarty и Google Minify в 2.2 для записи файлов кэша.
- registry - это директория по умолчанию для modRegistry, в которую записываются журналы регистрации файлов. Не является настоящим разделом кэша.
- resource содержит организованный по контексту и идентификатору ресурса механизм частичного кэширования ресурсов. Эти файлы кэша содержат метаданные для ресурса, кэшированное представление ресурса (_content) с оставшимися без кэширования тегами, политиками доступа к ресурсу и элементами и их источниками, используемые при обработке ресурса.
- rss не является настоящим разделом кэша, но используется MagpieRSS (виджеты RSS панели) для записи в кеш.
- scripts содержит источник сниппетов и плагинов, которые впоследствии записываются в папку кэша includes.
- setup не является настоящим разделом кэша, но используется инсталлятором MODX для кэширования шаблонов Smarty.
- system_settings содержит глобальную конфигурацию MODX и системные настройки. Этот раздел загружается первым по запросам в MODX. Поскольку альтернативные обработчики кэша для разделов хранятся в системных настройках, этот раздел не может быть загружен из другого обработчика кэша таким образом.
Чтобы изменить обработчик кэша для определенного раздела кэша, просто создайте новый системный (или контекстный) параметр с именем cache_PARTITION_handler (например, cache_resource_handler или cache_scripts_handler ) и присвойте ему значение обработчика кэша, который вы хотели бы использовать. По умолчанию используется xPDOFileCache , однако и другие обработчики доступны для APC , memcache (d) и wincache .
Обратите внимание, что в MODX 2.0.x система кэша довольно сильно отличалась. Доступные разделы были иными, а системные настройки сохранялись в core/cache/config.cache.php . Если вы все еще используете MODX 2.0.x, вам следует потратить больше времени на обновление и меньше времени на чтение этого документа.
Обратите внимание в Revolution 2.0¶
В MODX Revolution 2.0 была другая система кеширования с отличающимися разделами. Чтобы очистить кеш в 2.0, вы должны использовать метод clearCache() , который устарел с 2.1. Лучше обновиться до последней версии, чем продолжать использовать 2.0.
Разработано, построено и написано со всей любовью в мире от сообщества MODX.
Кэширование - это механизм в CMS MODX Revolution и не только, который позволяет сохранить некоторый результат в определённое место (кэш) для того чтобы в будущем (при следующих запросах) его можно было использовать.
В работе сайта кэширование играет значительную роль. Ведь правильно настроенное кэширование позволяет не только более быстро отдавать страницы пользователям, но и значительно сократить нагрузку на процессор и сервер базы данных.
Рассмотрим пример. Допустим у вас на всех страницах сайта в сайдбаре есть блок "Последние статьи". Для того чтобы его вывести на страницу вам необходимо подготовить запрос, получить данные из базы и обработать их. Вся эта операция не происходит мгновенно, на её выполнение требуется время. А если у вас в сутки запрашивается не одна, а сотни или тысячи страниц. То, представьте, сколько раз заново приходится строить один и тот же блок, т.е. при каждом запросе страницы, на которой он есть. Правильно конечно было бы создать блок "Последние статьи" только один раз (при первом вызове) и сохранить его кэш. А затем (при следующих запросах) просто использовать его. Тем самым можно не только увеличить быстродействие (загрузку) страниц, но и значительно уменьшить нагрузку на процессор и сервер баз данных. Последнее действие, которое ещё останется осуществить - это определить момент обновления кэша этого блока. В данном случае в момент выхода (публикации) новой статьи.
Пример 2. Добавление и получение кэша из пользовательского раздела¶
Как отключить кэширование в MODx
Конечно, для некоторых страниц в кэшировании необходимости нет, некоторые страницы и разделы при кэшировании теряют функционал. Настраивается кэширование как для отдельного документа (галочка “Кэшировать” на вкладке Настройка страницы), так и для любого сниппета (зачем каждый раз формировать данные, если они не изменяются?) - вызов сниппета в виде [[SnippetName]] ([!SnippetName!] -вызов без кэширования)
Очень часто неправильный тип вызова становится причиной некорректной работы сниппета (не работает разбивка на страницы, например)
Основные разделы кэша и их краткое описание
MODX Revolution имеет следующие разделы (справочная информация):
action_map Содержит массив всех идентификаторов контроллеров и пространств имён, доступных в менеджере. auto_publish Содержит штамп времени, который определяет момент, при наступлении которого необходимо будет автоматически опубликовать ресурс или снять его с публикации. context_settings Этот раздел используется для хранения настроек контекстов. Каждый контекст в этом разделе имеет свой файл, в котором содержится карта ресурсов (идентификаторы родителей и детей), карта псевдонимов, плагины, используемые в контексте и политика доступа. db Раздел кэша db предназначен для хранения результирующих наборов, запрошенных из базы данных с помощью методов getObject , getCollection и т.п. Этот кэш используется при включении параметра cache_db в настройках системы или тогда, когда данный параметр активирован в настройках контекста.
Этот кэш обычно применяется тогда, когда доступ к базе является более затратным действием, чем использование процессорного времени. includes Данный раздел используется как временное хранилище для исходных кодов php файлов (сниппетов и плагинов). Используется ядром MODX во время их выполнения. Файлы в этом кэше имеют формат: 23.include.cache.php (23 - это id сниппета или плагина). logs Данный раздел используется в качестве хранилища log файлов системы. menu Этот раздел содержит кэш меню менеджера (админки). mgr Данный раздел использует Smarty в качестве своего хранилища для записи в него временных файлов. resource Содержит кэш ресурсов, организованный с учётом контекста и id (файлы в этом кэше имеют формат 7.cache.php (7 - это id ресурса)). Каждый файл содержится метаданные ресурса, его кэшированное представление с не кэшированными тегами (_content), политику доступа для ресурса и элементов, а также их исходные коды (используются в процессе обработки ресурса). rss Данный раздел использует MagpieRSS в качестве каталога для записи своих временных файлов. scripts Содержит исходные коды сниппетов и плагинов, которые впоследствии будут записаны в кэш директорию includes . setup Используется системой MODX при установке. system_settings Содержит настройки системы MODX. Этот раздел загружается первым. Для его обработки нельзя назначить альтернативный кэшер (т.е. всегда используется только xPDOFileCache ).
Чтобы изменить провайдер кэша для определенного раздела кэша, просто создайте новый системный (или контекстный) параметр с именем cache_PARTITION_handler (например, cache_resource_handler - для раздела resource ) и присвойте ему значение обработчика кэша, который вы хотите использовать для его обработки (например, xPDOMemCache ).
Типы системных настроек¶
Атрибут xtype определяет, какой тип поля GUI будет использовать при рендеринге интерфейса для этого поля:
- combo-boolean : сохраненные значения 1 и 0. Будет отображать «Да» и «Нет»
- textfield : стандартное текстовое поле
- textarea : стандартная текстовая область
- text-password : стандартное поле пароля (ввод маскируется)
- numberfield : используется для ввода цифр
- modx-combo-language : позволяет пользователю выбрать язык
- modx-combo-source :
- modx-combo-template : позволяет пользователю выбрать шаблон
- modx-combo-content-type : позволяет пользователю выбрать тип контента
- modx-combo-charset : позволяет пользователю выбрать набор символов
- modx-combo-rte : как текстовая область, но с элементами управления форматированием
- modx-combo-context : позволяет пользователю выбрать контекст
- modx-combo-manager-theme : позволяет пользователю выбрать тему оформления интерфейса менеджера MODX
Создание дампа базы данных
Выполнить дамп базы данных, т.е. экспорт её структуры и данных. В зависимости от того какую вы используете базу данных - это осуществляется одним или другим инструментом.
В MySQL, например, это осуществляется с помощью клиенткой утилиты mysqldump :
Данное действие также можно выполнить с помощью инструмента phpmyadmin . Для этого необходимо выбрать базу данных, перейти на вкладку "Экспорт", установить необходимые параметры и нажать кнопку "OK".
Если вы хотите сделать резервную копию базы данных сайта, находящего на хостинге, то это наиболее просто выполнить через панель управления:
- на хостинге SpaceWeb - в панели управления выбрать значок "Базы MySQL" и в открывшейся странице напротив необходимой базы данных нажать на иконку дискеты (Создать копию "дамп" базы).
- на хостинге Beget - в панели управления перейти в раздел "BackUp", нажать на вкладку "Базы данных", выбрать базу данных и нажать на кнопку "Выгрузить резервную копию".
Обновление файла .htaccess
При переносе сайта на новый (другой) хостинг, возможно, потребуется внести изменения в конфигурационный файл .htaccess. Это может быть связано с тем, что некоторые его текущие настройки могут не поддерживаться на новом хостинге.
Внимание: Если вы при переходе на новый хостинг меняете ещё и доменное имя сайта, то убедитесь в том, что вы провели соответствующие изменения в файле .htaccess .
Сохранение настроек системы (программно)¶
Здесь все становится немного сложнее: когда мы получаем значение, используя getOption, мы получаем объект из кэша настроек. Это имеет явное преимущество в скорости, но это означает, что у нас по существу есть копия значения настройки, доступная только для чтения.
Пока есть метод setOption; это только обновляет кэш настроек в памяти.
Это по архитектурным причинам: системные настройки должны быть определены как configurations, NOT runtime dynamic values. Они обычно устанавливаются во время установки, а затем не часто обновляются. Однако могут быть законные времена, когда вам нужно обновить системные настройки программно, например, возможно, вы написали Пользовательская страница менеджера которая предлагает настраиваемую форму для ваших пользователей для своих системных настроек.
Если мы хотим обновить настройки системы, мы используем мощный xPDO getObject функция. Итак, давайте вернемся к нашему поиску простой настройки сайта и сравним ее рядом с более подробным (и более гибким) аналогом xPDO:
Разница в том, что использование getObject извлекает объект из базы данных без кэширования, и мы можем делать с объектом гораздо больше вещей, включая сохранение этого объекта. Итак, вот как мы должны получить и сохранить настройки системы:
Однако обратите внимание, что это не очищает кэш настроек, поэтому любые последующие вызовы getOption по-прежнему будут возвращать более старую кешированную версию настройки.
В WordPress сопоставимая функция API update_option().
Кэширование базы данных¶
Если вы включите системный параметр cache_db, MODX может автоматически кэшировать наборы результатов базы данных, извлеченные любым экземпляром xPDOCriteria или xPDOQuery . Это включает в себя все наборы результатов, представляющие xPDOObjects или коллекции xPDOObjects , возвращаемые такими методами, как getObject и getCollection .
Эта функция может быть включена в средах, где доступ к базе данных обходится дороже, чем время подключения файлов PHP, например, при использовании внешнего сервера базы данных, или настраивается для сред с доступным memcached , APC или другими системами кэширования. Это отдельный раздел кеша в MODX, поэтому его можно настроить с другими обработчиками кэша. Смотрите xPDO Caching для дополнительной информации.
Создание системной настройки программно¶
Возможно, вы захотите создать Системные настройки программно, чтобы предоставить вашим пользователям более чистый UX / UI. В своем коде вы можете поместить что-то вроде следующего:
Обратите внимание, что вы должны создать записи лексики, которые соответствуют вашему имени ключа (см. Раздел «Локализация» выше):
- Имя: setting_ + Key
- Описание: setting_ + Key + _desc
Таким образом, в этом примере вам необходимо добавить следующие записи лексикона в загруженный вами лексикон:
MODX заполняет значения для имени и описания на основе этих записей лексики.
Может оказаться полезным ссылаться на ваши локализованные языковые строки внутри ваших шаблонов или CMP. Это можно сделать с помощью тега лексикона, но вы должны указать тему «setting», например,
Очистка кэша MODX
Прежде чем переходить к переносу сайта на другой хостинг или в какое-то иное место (например, на локальный сервер), его сначала необходимо полностью очистить от кэша. Для этого необходимо войти в админку (менеджер) MODX и выполнить в ней следующие действия:
- Отключить сайт (Системные настройки -> Статус сайта -> положение "Нет").
- Очистить кэш сайта (Управление -> Очистить кэш).
- Очистить сессии (Управление -> Завершить все сеансы).
Примечание: Самый безопасный и правильный способ - это очистить кэш вручную. Это можно сделать путем удаления всего содержимого каталога cache , расположенного в папке core . Этот процесс, как правило, более быстро выполнить на сервере с помощью диспетчера файлов. Но данное действие также можно выполнить и протоколу FTP.
Получение списка связанных настроек¶
Если вы заметили в графическом интерфейсе выше, MODX позволяет несколько логично сгруппировать настройки системы. Самые полезные группировки - это area и префикс key. Использование xPDO getCollection Метод, мы можем легко предоставить некоторые критерии поиска, чтобы получить настройки, которые мы хотим.
Вот как мы можем получить все настройки из области «Почта»:
Это естественным образом приводит нас к одной из других особенностей xPDO: xPDOQuery объект. Мы можем использовать его для передачи более сложных критериев нашему вызову getCollection. Вот как мы можем получить все настройки, которые используют префикс «quip»:
Возможно, вы не ожидали введения в xPDO, пока вы просто пытались получить и установить системные настройки, но он там.
Управление кэшированием посредством изменения системных настроек
Общие настройки кэширования, влияющие на весь сайт, устанавливаются в системных настройках. Для этого необходимо нажать в админке MODX (в главном меню) на значок шестерёнки -> выбрать пункт "Системные настройки" -> раздел "Core" -> подраздел "Кэширование".
Название ключей и их назначение:
cache_action_map (по умолчанию: да) Включает кэширование карты контроллеров (для ускорения загрузки страниц панели управления). cache_alias_map (по умолчанию: да) Включает кэширование карты ресурсов (добавление URI ресурсов в кэш контекста). Эту опцию рекомендуется устанавливать в положение "Да" только для небольших сайтов. А для сайтов с огромных количеством ресурсов её отключать. cache_context_settings (по умолчанию: да) Включает кэширование настроек контекстов для более быстрой загрузки страниц. cache_db (по умолчанию: нет) При включении, объекты и необработанные результаты наборов, запрашиваемые посредством SQL запросов будут кэшироваться (используется для уменьшения нагрузки на базу данных). Для хранения этого кэша может потребоваться достаточно большой объём дискового пространства. cache_db_expires (по умолчанию: 0) Время (в секундах) для хранения кэша db. Если установить значение, равное 0, то время жизни кэша будет не ограниченным. cache_db_session (по умолчанию: нет) При включении данной опции и cache_db, сессии, хранящиеся в базе данных, тоже будут кэшироваться. cache_db_session_lifetime (по умолчанию: нет) Время (в секундах), которое определяет период жизни кэша сессий. cache_default (по умолчанию: да) Устанавливает, необходимо ли при создании ресурса, делать его кэшируемым (устанавливать флажок cacheable в положение "Да"). cache_disabled (по умолчанию: нет) Если установить данному параметру значение "Да", то он отключить весь механизм кэширования MODX Revolution (не рекомендуется). cache_expires (по умолчанию: 0) Это значение (в секундах) устанавливает время жизни кэша MODX. Значение 0 задаёт неограниченное время его жизни. cache_format (по умолчанию: 0) Формат хранения кэша. 0 - в формате массива PHP, 1 - в JSON, 2 - в сериализованном виде. cache_handler (по умолчанию: xPDOFileCache) Имя провайдера, используемого по умолчанию для обработки всех разделов кэша. cache_lang_js (по умолчанию: да) При включении данной опции будут использоваться серверные заголовки для кэширования строк лексикона загружаемые в JavaScript и используемые интерфейсом менеджера. cache_lexicon_topics (по умолчанию: да) Когда включено, все темы словарей будут кэшироваться. Это позволит значительно снизить нагрузку при интернациональном использовании системы. MODX рекомендует оставлять эту опцию включенной, иначе работа менеджера может быть сильно замедлена. cache_noncore_lexicon_topics (по умолчанию: да) При отключении данной опции темы словарей дополнений (не принадлежащих ядру) кэшироваться не будут. Эта опция может быть очень полезна при разработке дополнений. cache_resource (по умолчанию: Да) Включает частичное кэширование ресурсов. Будут задействованы только те ресурсы, у которых параметр "Кэшируемый" установлен. Выключение данной опции отключит кэширование всех ресурсов. cache_resource_expires (по умолчанию: 0) Устанавливает период жизни кэша ресурсов (в секундах). Значение 0 позволяет хранить кэш ресурсов неограниченное время. cache_scripts (по умолчанию: да) Если включено, то MODX будет кэшировать все скрипты (сниппеты и плагины) в кэш (файлы) для увеличения скорости их загрузки. MODX рекомендует оставить эту настройку включённой. cache_system_settings (по умолчанию: Да) Если выбрано "Да", то настройки системы будут кэшироваться, тем самым уменьшая время загрузки страниц. MODX рекомендует оставить эту настройку включённой, т.е. в положение "Да". clear_cache_refresh_trees (по умолчанию: Нет) Если включено, то после обновления кэша сайта активные древовидные меню менеджера будут автоматически обновляться. syncsite_default (по умолчанию: Да) Если параметр имеет значение "Да", то сохранение ресурса будет приводить к автоматической очистке кэша.
web программирование, администрирование и всякая всячина, которая может оказаться полезной
В системе modx предусмотрено кэширование документов. Если не вдаваться в подробности, то это значит, что данные, необходимые для формирования страницы сохраняются из базы данных в отдельный файл, к которому в дальнейшем происходит повторное обращение.
Самый простой и часто встречаемый ответ - зайти в админку по адресу /manager/ (что делать, если при входе в админку modx открывается ispmanager) и нажать ссылку “Очистить кэш“.
Настройка кэширования ресурсов
В MODX управление кэшированием ресурсов осуществляется:
- посредством изменения системных настроек cache_resource , cache_resource_expires и cache_default (глобальные настройки, влияющие на все ресурсы);
- с помощью флажка "Кэшируемый" (включает или отключает кэш отдельно взятого ресурса).
Кэш ресурсов в MODX расположен в директории /core/cache/resource/ . Он построен с учётом контекста, к которому принадлежит ресурс. Имена файлов в этом кэше имеют следующий формат:
Цифра в начале имени - это значение id ресурса.
Пример 1: Простое добавление и получение кэша¶
Повторный запуск программы установки
Совет: Повторный процесс установки MODX Revolution позволит закрепить процедуру перемещения сайта посредством выполнения команд, находящихся в setup .
Для этого необходимо, если у вас нет установочной сборки, скачать её. При этом следует скачать версию MODX Revoution, которая была у вас установлена на сайте. После этого распаковать полученный архив и загрузить каталог setup в корень вашего сайта. Запустить процесс установки и выбрать режим обновления.
Рекомендация после установки: Для того чтобы кэш браузера не влиял на работоспособность проверяемого сайта, страницы лучше открывать в режиме инкогнито или после очистки его от кэша.
Если в результате переноса у сайта не работает админка, например, отображается пустая страница (белый экран), то попробуйте воспользоваться советами и рекомендациями, приведёнными в статье.
Настройка кэширования в MODX Revo
В MODX Revolution управление кэшированием может осуществляться посредством:
- изменения значений системных настроек (область действия - весь сайт);
- кэшированного или не кэшированного (с восклицательным знаком) вызова чанков, сниппетов и плейсхолдеров (область действия - указанный элемент);
- установки или снятия флажка в поле ресурса "Кэшируемый" (область действия - указанный ресурс);
- методов modCacheManager (программное управление кэшированием).
Программное управление кэшированием
В MODX работа с кэшем осуществляется посредством modCacheManager , который является расширением класса xPDOCacheManager .
modCacheManager предоставляет следующие методы для работы с кэшем:
- add($key, $var, $lifetime = 0, $options = array()) - необходим для добавления значения в кэш (но только если это значение не существует или срок его хранения вышел);
- replace($key, $var, $lifetime = 0, $options = array()) - используется для замены одного (существующего) кэшированного значения на другое;
- set($key, $var, $lifetime = 0, $options = array()) - используется для установки значения в кэш не зависимого от того есть ли оно в кэше или нет;
- delete ($key, $options = array()) - удаляет кэшированное значение из кэша;
- get ($key, $options = array()) - применяется для получения кэшированное значение из кэша;
- refresh ($key, $options = array()) - предназначен для удаление всех разделов кэша или какого-то конкретного.
Массив $options может содержать следующие ключи:
- xPDO::OPT_CACHE_KEY - указывает раздел кэша;
- xPDO::OPT_CACHE_HANDLER - задаёт провайдер кэша (как правило, данный ключ нет смысла указывать, для назначения провайдера для раздела кэша используйте системные настройки (параметр cache_PARTITION_handler ));
- xPDO::OPT_CACHE_EXPIRES - устанавливает длительность хранения кэша в секундах.
Примеры использования методов modCacheManager :
Удаление всего кэша MODX:
Удаление кэша контекстов web и en из раздела context_settings :
Получить значение кэша по ключу comments_17 из раздела comments :
Сохранить в кэш comments_17 , расположенный в разделе comments , значение переменной $output (время хранения данных в кэше не ограниченное):
Удалить из раздела main_menu кэш menu_11 :
Пример, как можно организовать программное кэширования главного двухуровневого меню на сайте, выполненного с помощью компонента navbar Bootstrap 3.
В примере используется выборочное кэширование, т.е. кэш создаётся только для тех ресурсов сайта, которые присутствуют в меню. Для остальных ресурсов кэш будет подбираться в зависимости от того к какому разделу каждый из них относится.
Чанк tpl.mainMenuOuter (внешняя обёртка главного меню):
Вызов сниппета MainMenu в шаблоне:
После этого в разделе main_menu будет находиться кэши главных меню ресурсов.
Переопределение настроек (Наследование)¶
В то время как в этом документе в основном говорится о Системных настройках, MODX поставляется с очень мощной системой наследования, которая позволяет переопределять настройки в контексте, пользовательской группе или пользовательской настройке.
По сути, когда параметр запрашивается в сеансе определенного пользователя, параметры проверяются в следующем порядке:
- Настройка пользователя
- Настройка группы пользователей
- Настройка контекста (обратите внимание, что в менеджере контекст обычно называется mgr)
- Настройка системы
MODx Evo clear_cache - программная очистка кэша
Однако, при разработке различных модулей, дополнений и плагинов может потребоваться очищать кэш программно, то есть средствами PHP. Аналогично программной очистке кэша в Amiro, возможна реализация и для системы управления MODx.
Для программной очистки кэша MODx (для EVO) можно использовать небольшую функцию, которая задействует “стандартные” средства системы:
Получение настроек системы (программно)¶
Чтобы получить значение настройки из сниппета, плагина или другого PHP-кода, вы используете getOption функции и передачи ей уникальный ключ для опции, например:
В WordPress сопоставимая функция API get_option().
Эта функция извлекает значение из кэша настроек.
Список настроек¶
Описание каждого параметра следующее:
Разработано, построено и написано со всей любовью в мире от сообщества MODX.
Кэшируя повторно используемые данные, можно предотвратить множество запросов к базе данных, что приведет к повышению производительности. MODX Revolution предлагает ряд различных функций кэширования на разных уровнях в приложении. Кэширование в MODX в основном обрабатывается базовым классом modCacheManager , который расширяет класс xPDOCacheManager и позволяет использовать обработчики кэша, зависящие от раздела. Реализация по умолчанию записывает кэши в файлы в папке core/cache/ .
Если вы определили пользовательский ключ MODX_CONFIG_KEY , менеджер кэша выполнит запись в core/cache/MODX_CONFIG_KEY/
Настройка конфигурационного файла MODX
После переноса файлов и данных на новый сервер (например, другой хостинг), необходимо изменить главный конфигурационный файл MODX config.inc.php , который расположен в следующем месте:
В этом файле необходимо указать правильные пути к различным ресурсам MODX, а также настройки для подключения к базе данных. Для того чтобы данные действия выполнить на хостинге необходимо сначала узнать его домашнюю директорию. Выполнить это можно, например, можно с помощью SSH. Для этого в SSH-клиенте необходимо будет ввести следующие команды:
Открываем файл config.inc.php и вносим в него следующие изменения:
Внимание: В процессе редактирования файла config.inc.php возможно потребуется изменить его разрешения. После правки этого файла установите ему права только на чтение.
Изменения также необходимо ещё произвести в 3 дополнительных файлах php:
- /config.core.php
- /connectors/config.core.php
- /manager/config.core.php
В этих файлах необходимо указать правильный полный путь до директории сайта MODX Revolution core :
Комментарии (4) к записи “Как очистить кэш в MODx? Кэширование в modx”
Все отлично меня интересует обновление кэша снипета в установленное время суток. Если есть такой скрипт было бы хорошо
Сергей, очистка кэша в определённое время возможна. В зависимости от версии MODx, решение будет различным. Для Revo, например:
$modx->executeProcessor(array(
'location' => 'system',
'action' => 'clearCache',
));
return '';
Спасибо, а куда нужно вставить функцию, неподскажите? В шапку сайта или в чанки?
MODX поставляется с гибким набором системных настроек. Они находятся в Система -> Системные настройки и могут быть легко отредактированы и изменены. Все системные настройки доступны в ваших шаблонах с помощью обозначения [[++placeholder]] . Посмотрите Теги шаблона для дополнительной информации.
Параметры¶
- Ключ: в конечном итоге это уникальное имя вашего [[++placeholder]]
- Имя: эта метка отображается в столбце «Имя» при просмотре всех настроек системы. Это значение может быть локализовано (см. Ниже).
- Тип поля: в настоящее время поддерживаются 3 типа ввода: TextField, TextArea, Yes/No
- Пространство имен: как с Пользовательские страницы менеджера, пространство имен определяет папку внутри core/components/.
- Area Lexicon Entry: это значение влияет на группировку системных настроек; создайте несколько системных настроек, которые совместно используют «Область ввода лексики», и они будут сгруппированы вместе.
- Значение: значение по умолчанию.
- Описание: это значение может быть локализовано (см. Ниже).
Локализация¶
Значения, используемые для описания настроек системы, могут быть необязательно локализованы (т.е. переведены) путем ссылки на конкретный файл локализации. Ключи лексики следуют определенному формату:
- Имя: setting_ + Key
- Описание: setting_ + Key + _desc
Например, если мы посмотрим на Quip's [[++quip.emailsFrom]] настройки, мы видим, что он использует пространство имен quip. Ожидаемая структура папок состоит в том, чтобы искать файлы локализации в папке пространства имен, затем в папке «лексикона», затем в папках, разделенных по языковым кодам, и затем в default.inc.php файле, для примера core/components/quip/lexicon/en/default.inc.php
В нашем примере Quip мы видим имя setting_quip.emailsFrom и описание setting_quip.emailsFrom_desc. Эти два значения соответствуют ключам в $_lang массив внутри default.inc.php:
Мы рекомендуем вам щелкнуть правой кнопкой мыши существующий системный параметр и выбрать «Обновить системный параметр», чтобы получить представление о том, как это работает.
Обновление кэша MODX Core¶
Чтобы обновить любой из основных разделов кэша MODX, используйте метод modCacheManager->refresh() . Минимальный вызов не имеет параметров и обновит все разделы основного кэша.
Кроме того, вы можете определить массив $providers с разделом элементов key => $partitionOptions .
Второй параметр $results передается по ссылке и будет содержать результаты каждого раздела кэша. В зависимости от раздела это может быть логическое значение или массив с дополнительной информацией о результате обновления определенного раздела. Сама функция возвращает логическое значение, указывающее, вернул ли какой-либо из разделов логическое значение false .
Управление кэшированием элементов
Система MODX позволяет управлять кэшированием чанков, сниппетов и плейсхолдеров. Осуществляется это посредством флага (восклицательного знака) в конструкции вызова этого элемента.
Данный флаг является не обязательным. Если его не указывать, то вызов элемента будет кэшированным. Это означает, что при вызове элемента, система MODX будет проверять есть ли результат его работы в кэше. Если он есть, то система MODX просто возьмёт его оттуда. Если же его нет, то этот элемент будет запущен на выполнение. После завершения выполнения система MODX сохранит результат его работы в кэш (для использования в следующих вызовах).
При указании в конструкции вызова элемента восклицательного знака перед именем элемента, он кэшироваться не будет. Это означает то, что данный элемент будет при каждом вызове запускаться на выполнение.
Получение метаданных настроек¶
Как только мы начнем извлекать Objects, которые представляют системные настройки, а не только их значение, мы можем увидеть все метаданные для любого заданного параметра (то есть все атрибуты). Посмотрите на этот код в качестве примера:
Как только вы поймете, как манипулировать объектами с помощью MODX и xPDO, вы сможете извлекать и изменять практически все внутри MODX, потому что практически все является объектом.
Общая терминология кэширования и поведение¶
MODX использует разные разделы для отдельных типов кэшируемых данных. Упрощенно, раздел - это папка в директории core/cache/ , но настоящая ценность разделов в том, что каждому разделу могут быть назначены разные обработчики кэша. Обработчики кэша являются производными от класса xPDOCache и предоставляют единый API для хранения, чтения и удаления записей кэша.
Обработчик кэша по умолчанию xPDOFileCache записывает кэш в файловую систему в папке core/cache/ , но в ядре доступны также другие обработчики кэша для APC ( xPDOAPCCache ), memcache(d) ( xPDOMemCache , xPDOMemCached ) и WinCache ( xPDOWinCache ).
Перенос файлов и данных на новое место
Выполняем обратные действия, т.е.:
- Переносим архив с файлами в необходимую директорию на новом сервере. На хостинге эту операцию можно выполнить с помощью файлового менеджера. После копирования необходимо проверить права на директории и файлы. Для директорий должно быть выставлено 755, для файлов - 644. Если права для папок и файлов выставлены не правильно, то их можно изменить с помощью следующих команд в SSH-клиенте (PuTTY):
- Создать базу данных и импортировать в неё ранее созданный дамп (файл с разрешением sql). Если файл имеет большой размер, то данную операцию необходимо выполнить в командной строке с помощью инструмента mysql: На хостинге выполнение данной команды осуществляется через протокол SSH. В Windows для подключения к серверу по данному протоколу можно использовать SSH-клиент PuTTY.
Если размер базы не большой, то для импортирования базы данных можно использовать инструмент phpmyadmin.
Очистка кэша MODX
Прежде чем переходить к переносу сайта на другой хостинг или в какое-то иное место (например, на локальный сервер), его сначала необходимо полностью очистить от кэша. Для этого необходимо войти в админку (менеджер) MODX и выполнить в ней следующие действия:
- Отключить сайт (Системные настройки -> Статус сайта -> положение "Нет").
- Очистить кэш сайта (Управление -> Очистить кэш).
- Очистить сессии (Управление -> Завершить все сеансы).
Примечание: Самый безопасный и правильный способ - это очистить кэш вручную. Это можно сделать путем удаления всего содержимого каталога cache , расположенного в папке core . Этот процесс, как правило, более быстро выполнить на сервере с помощью диспетчера файлов. Но данное действие также можно выполнить и протоколу FTP.
Как отключить очистку кэша в MODx?
По умолчанию при каждом сохранении документа (как нового так и уже существующего) modx производит очистку кэша. Действительно, пока кэш не будет очищен, система будет брать данные из “устаревших” кэш файлов. Причем удалять надо все файлы - иначе данные в некоторых сниппетах (например, Ditto) будут взяты из кэша.
Иногда, при редактировании или добавлении нескольких документов подряд гораздо удобнее не очищать каждый раз текст, а после всех изменений “накатить” новую версию.
Немного хакнув /plugins/managermanager/functions/fieldvalues.inc.php строка
$allowed_actions = array('85','4','72');
заменил на
$allowed_actions = array('85','4','72','27');
где, 27 = Editing document (manager/includes/actionlist.inc.php);
Метки: modx
Автор будет признателен, если Вы поделитесь ссылкой на статью, которая Вам помогла:
BB-код (для вставки на форум)
html-код (для вставки в ЖЖ, WP, blogger и на страницы сайта)
ссылка (для отправки по почте)
Создание новых системных настроек (через графический интерфейс)¶
Чтобы создать новый параметр системы, нажмите ссылку «Создать новые параметры» в разделе «Система» -> «Параметры системы».
Копирование файлов
Следующее действие - это скопировать все файлы с рабочего проекта. Данное действие более быстро выполнить, если их предварительно упаковать в архив.
Если вы хотите перенести сайт MODX с одного хостинга на другой, то в этом случае можно воспользоваться готовыми инструментами специально предназначенными для этого.
Например, на хостинге SpaceWeb можно воспользоваться файловым менеджером, в котором выбрать ссылку "Создать архив всех файлов" или в разделе "Backup" с помощью элемента "Сохранить архив всех файлов в домашней директории".
Читайте также: