Введение в Zend Framework

 Learning Zend Framework

appendix

 Zend Framework Reference


  • Zend_Gdata
  • Zend_Http
  • Zend_InfoCard
  • Zend_Json
  • Zend_Layout
  • Zend_Ldap
  • Zend_Loader
  • Zend_Locale
  • Zend_Log
  • Zend_Mail
  • Zend_Markup
  • Zend_Measure
  • Zend_Memory
  • Zend_Mime
  • Zend_Navigation
  • Zend_Oauth
  • Zend_OpenId
  • Zend_Paginator
  • Zend_Pdf
  • Zend_ProgressBar
  • Zend_Queue
  • Zend_Reflection
  • Zend_Registry
  • Zend_Rest

  • Zend_Search_Lucene
  • Zend_Serializer
  • Zend_Server
  • Zend_Service
  • Zend_Session
  • Zend_Soap
  • Zend_Tag
  • Zend_Test
  • Zend_Text
  • Zend_TimeSync
  • Zend_Tool
  • Zend_Tool_Framework
  • Zend_Tool_Project
  • Zend_Translate
  • Zend_Uri
  • Zend_Validate
  • Zend_Version
  • Zend_View
  • Zend_Wildfire
  • Zend_XmlRpc
  • ZendX_Console_Process_Unix
  • ZendX_JQuery
  • Ttranslation 27.4% Update 2010-11-28 - Revision 23238 - Version ZF 1.11.x

    17.2. Теория кэширования

    Есть три ключевых понятия в Zend_Cache. Первое — уникальный идентификатор (строка), который служит для идентификации записей кэша. Второе — это директива 'lifetime', которую вы могли видеть в предыдущих примерах; она определяет, в течение какого времени кэшируемый ресурс считается "свежим". Третье понятие — условное исполнение, используемое для того, чтобы части вашего кода могли быть пропущены целиком, этим повышается производительность. Основной метод фронтэнда (например, Zend_Cache_Core::get()) всегда спроектирован так, чтобы возвращать FALSE при промахе кэша, если это имеет смысл для данного фронэнда. Это дает конечным пользователям возможность включать части кода, которые нужно кэшировать (и затем пропускать) в операторы if(){ ... }, где условием является сам метод Zend_Cache. Но в конце этих блоков вы должны сохранять то, что было сгенерировано (например, методом Zend_Cache_Core::save()).

    [Замечание] Замечание

    Для некоторых фронтэндов включение условного исполнения в код не нужно, так как вся логика уже реализована в них (например, Function).

    [Замечание] Замечание

    "Попадание в кэш" — термин для определения того состояния, когда запись кэша найдена, является корректной и "свежей" (другими словами, для которой не закончился срок действия). Иначе имеет место "промах кэша". Когда происходит "промах кэша", вы должны сгенерировать свои данные, которые помещаются в кэш. С другой стороны, если есть "попадание", то бэкэнд автоматически извлечет запись из кэша.

    17.2.1. Фабричный метод Zend_Cache

    Корректным способом создания рабочего экземпляра фронтэнда Zend_Cache является код показанный в следующем примере:

    // Выбираем бэкэнд (например, 'File' или 'Sqlite'...)
    $backendName '[...]';

    // Выбираем фронтэнд (например, 'Core', 'Output', 'Page'...)
    $frontendName '[...]';

    // Устанавливаем массив опций для выбранного фронтэнда
    $frontendOptions = array([...]);

    // Устанавливаем массив опций для выбранного бэкэнда
    $backendOptions = array([...]);

    // Создаем экземпляр
    // (два последних аргумента являются необязательными)
    $cache Zend_Cache::factory($frontendName,
                                 
    $backendName,
                                 
    $frontendOptions,
                                 
    $backendOptions);

    В последующих примерах мы предполагаем, что переменная $cache содержит инстанцированный, как показано в примере, фронтэнд, и что вы понимаете, как передавать параметры выбранному вами бэкэнду.

    [Замечание] Замечание

    Всегда используйте Zend_Cache::factory() для получения экземпляров фронтэнда. Непосредственно созданные экземпляры фронтэндов и бэкэндов будут работать не так, как ожидается.

    17.2.2. Добавление тегов к записям

    Теги являются средством категоризации записей кэша. Когда вы производите сохранение в кэш методом save(), то можете установить массив тегов к данной записи. После этого вы можете удалить все записи кэша, помеченные данным тегом (тегами).

    $cache->save($huge_data'myUniqueID', array('tagA''tagB''tagC'));
    [Замечание] Замечание

    Метод save() принимает также необязательный четвертый параметр: $specificLifetime. Если он не равен FALSE, то устанавливается время жизни текущей записи кэша.

    17.2.3. Очистка кэша

    Для того, чтобы удалить или сделать недействительной запись с определенным идентификатором, вы можете использовать метод remove():

    $cache->remove('idToRemove');

    Для того, чтобы одновременно удалить или сделать недействительными несколько записей кэша, вы можете использовать метод clean(). Например, чтобы удалить все записи кэша:

    // удаление всех записей
    $cache->clean(Zend_Cache::CLEANING_MODE_ALL);

    // удаление только устаревших записей
    $cache->clean(Zend_Cache::CLEANING_MODE_OLD);

    Если вы хотите удалить записи кэша, помеченные тегами 'tagA' и 'tagC':

    $cache->clean(
        
    Zend_Cache::CLEANING_MODE_MATCHING_TAG,
        array(
    'tagA''tagC')
    );

    Если вы хотите удалить записи кэша, не помеченные тегами 'tagA' и 'tagC': If you want to remove cache entries not matching the tags 'tagA' or 'tagC':

    $cache->clean(
        
    Zend_Cache::CLEANING_MODE_NOT_MATCHING_TAG,
        array(
    'tagA''tagC')
    );

    Если вы хотите удалить записи кэша, помеченные тегами 'tagA' или 'tagC':

    $cache->clean(
        
    Zend_Cache::CLEANING_MODE_MATCHING_ANY_TAG,
        array(
    'tagA''tagC')
    );

    Доступные режимы очищения: CLEANING_MODE_ALL (удалить все), CLEANING_MODE_OLD (удалить устаревшие), CLEANING_MODE_MATCHING_TAG (удалить помеченные тегом) и CLEANING_MODE_NOT_MATCHING_TAG (удалить не помеченные тегом). Последние два, как ясно из названия, передаются вместе с массивом тегов.

    digg delicious meneame google twitter technorati facebook

    Comments

    Loading...