Перейти к публикации
View in the app

A better way to browse. Learn more.

Дизайн и модификация Invision Community

A full-screen app on your home screen with push notifications, badges and more.

To install this app on iOS and iPadOS
  1. Tap the Share icon in Safari
  2. Scroll the menu and tap Add to Home Screen.
  3. Tap Add in the top-right corner.
To install this app on Android
  1. Tap the 3-dot menu (⋮) in the top-right corner of the browser.
  2. Tap Add to Home screen or Install app.
  3. Confirm by tapping Install.
Опубликовано:

Добрый день. Потихоньку делаю портал для форума и столкнулся вот с чем имеется класс кеширования http://www.invisionpower.com/support/guides/_/advanced-and-developers/api-methods/kernel-caching-libraries-classcachephp-r153

как бы все работает, но вот проблема он включается путем добавления соответствующей строки в conf_global.php и включается для всего форума в целом, но мне этого не нужно хочется что бы работал кешь только для портала, можно как то включить его отдельно от форума?

Рекомендованные сообщения

Опубликовано:

Что вы подразумеваете под "кеш только для портала"? Кеш - это когда системные кеши находятся не в бд (ibf_cache_store), а хранятся где-то в другом месте, например на диске, или в memcached. Если включить кеширование только для портала, то остальные кеши системы либо будут отсутствовать, либо будут в неактуальном состоянии, так как обновляться эти кеши будут в бд, а в своем приложении вы будете дергать их из другого места. И аналогично, на форуме вы не сможете получить данные их кеша портала, так как к нему не будет доступа. Если нужно кешировать какие-то конкретные данные в портале - используйте другую обертку доступа нежели стандартный объект кеш-а.

Опубликовано:
  • Автор

Ну для примера пусть будет не кешь портала а кешь скрипта возьмем пример из API по ссылке

<?php
require_once( '/forum/initdata.php' );
require_once( '/forum/admin/sources/base/ipsRegistry.php' );
$registry=ipsRegistry::instance();
$registry->init();

$variable2 = $registry->cache()->getWithCacheLib( 'This_is_a_unique_key' );
if( !$variable2 )
{
$variable = 'Some data that I want to store in memory for retrieval at a later time. ly and show the cached resu.';
$registry->cache()->putWithCacheLib( 'This_is_a_unique_key', $variable, 120 );
}

$registry->output->setTitle('Ваше название'); 
$registry->output->addContent($variable2);
$registry->output->sendOutput();


Как бы все работает кеширует и тд, но для работы нужно добавить в conf_global.php скажем $INFO['use_diskcache'] = 1; это активирует систему кеширования всего форума, где это предусмотрено, но мне этого не нужно мне нужно только что бы происходил кешь в моем скрипке, классом кеширования форума, а сам форум не кешировался

Изменено пользователем avgaz

Опубликовано:

Кеширование либо работает глобально, либо не работает. Даже если включить кеш только для в текущем приложение, он включится для всей аппликации в целом.

Нужен отдельный кеш - юзайте отдельный кеш, используя свой объект

 

require_once(IPS_KERNEL_PATH.'classCacheDiskcache.php');

$mycache = new classCacheDiskcache('This_is_a_unique_key');
$registry->setClass('mycache', $mycache);

$mycache->putInCache();
$mycache->getFromCache();
$mycache->updateInCache();

Опубликовано:
  • Автор

у меня в этом случае выдает Fatal error: Interface 'interfaceCache' not found in \forum\ips_kernel\classCacheDiskcache.php on line 35

Опубликовано:

require_once(IPS_KERNEL_PATH.'interfaces/interfaceCache.php');

require_once(IPS_KERNEL_PATH.'classCacheDiskcache.php');

Создайте аккаунт или войдите в него для комментирования

Сейчас на странице 0

  • Нет пользователей, просматривающих эту страницу.

Configure browser push notifications

Chrome (Android)
  1. Tap the lock icon next to the address bar.
  2. Tap Permissions → Notifications.
  3. Adjust your preference.
Chrome (Desktop)
  1. Click the padlock icon in the address bar.
  2. Select Site settings.
  3. Find Notifications and adjust your preference.