Как отключить кеш для динамической информации в слотах в Symfony 1.4

Я создаю музыкальное приложение в Symfony 1.4 Doctrine 1.2. Я использую слоты для настройки метатегов facebook api в заголовке макета. Например, когда я просматриваю страницу песни, showSuccess для песни будет иметь слот, подобный показанному ниже, который заполняет метатеги заголовка макета динамической информацией в зависимости от того, что это за песня.

<?php slot('fb_metaproperty_title') ?>
<meta property="og:site_name" content="abc"/>
<meta property="og:title" content="<?php echo $songs['song_name'].' by '.$songs['full_name'] ?>"/>
<meta property="og:type" content="song" />
<meta property="og:description" content="This song is currently ranked <?php echo $songOverallRank?>th" />
<meta property="og:url" content="<?php echo $linktosongpage ?>"/>
<meta property="og:image" content="<?php echo $images[0]?>"/>
<?php end_slot() ?>

Проблема в том, что у меня включен кеш, а переменная $songOverallRank кэшируется в слоте, поэтому значение ранга устарело (поскольку оно часто меняется). Та же переменная $songOverallRank актуальна в коде непосредственно под (но вне) слота. Просто значения слотов по какой-то причине кешируются и устарели.

Я проверил документацию Symfony о том, как вручную удалить значения кеша, и это кажется довольно громоздким.

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

Я использую sfMemcacheCache для view_cache/results_cache и APC для sfPatternRouting кеша, если это помогает.


person frankp221    schedule 17.08.2012    source источник


Ответы (1)


Я нашел причину проблемы. Значения кэшировались не в слоте. На самом деле это был Facebook, который кэшировал информацию о метатегах. Слот предоставлял актуальные значения, но метатег facebook просто отображал старые данные в facebook. Чтобы очистить кеш метатега facebook, мне пришлось вручную ввести ссылку в отладчик facebook (линтер).

Ввод каждой ссылки вручную для очистки кеша не является масштабируемым решением, поэтому я решил не помещать динамические данные в метатег facebook.

Скорее работа, чем решение. Хотелось бы знать, как автоматически очищать кеш facebook по запросу.

person frankp221    schedule 18.08.2012