Управление в спящем режиме 2-й кэш уровня

Вы должны исключить запрос, начинающийся с index, чтобы избежать зацикливания, поэтому измените правила следующим образом:

RewriteEngine On
RewriteRule !^index\.php  https://example.com/index.php%{REQUEST_URI}  [R=301,L]

Примечание: очистите кеш браузера

5
задан mainstringargs 31 March 2009 в 17:36
поделиться

3 ответа

Я назвал бы "afterInsert" на EntityPersister, который отображается на Ваш объект, так как Чтение-запись является асинхронной стратегией параллелизма. Я соединил это после просмотра Того, чтобы быть в спящем режиме 3,3 источников. Я не 100%, что это будет работать, но это выглядит хорошим мне.

EntityPersister persister = ((SessionFactoryImpl) session.getSessionFactory()).getEntityPersister("theNameOfYourEntity");

if (persister.hasCache() && 
    !persister.isCacheInvalidationRequired() && 
    session.getCacheMode().isPutEnabled()) {

    CacheKey ck = new CacheKey( 
                    theEntityToBeCached.getId(), 
                    persister.getIdentifierType(), 
                    persister.getRootEntityName(), 
                    session.getEntityMode(), 
                    session.getFactory() 
                );

    persister.getCacheAccessStrategy().afterInsert(ck, theEntityToBeCached, null);
}

--

/**
 * Called after an item has been inserted (after the transaction completes),
 * instead of calling release().
 * This method is used by "asynchronous" concurrency strategies.
 *
 * @param key The item key
 * @param value The item
 * @param version The item's version value
 * @return Were the contents of the cache actual changed by this operation?
 * @throws CacheException Propogated from underlying {@link org.hibernate.cache.Region}
 */
public boolean afterInsert(Object key, Object value, Object version) throws CacheException;
6
ответ дан 14 December 2019 в 04:48
поделиться

Я сделал это путем создания моего собственного поставщика кэша. Я просто переопределил EhCacheProvider и использовал мою собственную переменную для менеджера, таким образом, я мог возвратить его в помехах. После того как Вы получаете CacheManager, можно назвать manager.getCache (class_name) для получения Кэша для того типа объекта. Затем Вы создаете CacheKey с помощью первичного ключа, типа и имени класса:

  CacheKey cacheKey = new CacheKey(key, type, class_name, EntityMode.POJO,
    (SessionFactoryImplementor)session.getSessionFactory());

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

Мог бы быть способ получить доступ к CacheProvider при создании SessionFactory первоначально, который избежал бы потребности реализовать собственное.

1
ответ дан 14 December 2019 в 04:48
поделиться
Другие вопросы по тегам:

Похожие вопросы: