如何禁用ehcache或所有类型的缓存



Hybris:6.3.0.0-SNAPSHOT

我正在进行性能测试,需要禁用缓存。我已经禁用了数据库(mySQL(缓存,并希望禁用所有形式的应用程序缓存。有可能吗?

我已经看到了其他问题和使用setDisableCaching for FlexibleSearch的建议。不幸的是,有些FlexibleSearch在Hybris的控制下,我无法直接更改方法。我下一步想推翻它,但我想知道是否有更简单的方法。

我还尝试在local.properties中的tomcat.generaloptions中添加"-Dnet.sf.ehcache.disabled=true",但应用程序似乎只是在启动过程中挂起,服务器永远不会启动。

附加上下文:我们有一个web服务,它正在返回3000条PointOfService记录。第一次调用太慢,客户端认为应用程序无法工作(可能已超时(。后续调用速度更快,因为数据已经被缓存。我需要检查如何提高第一次通话的性能。

新的缓存是Region cache。

如果要禁用缓存,则必须将所有区域缓存的大小设置为0。它不会被真正禁用,但不会缓存任何内容。

您可以使用其他响应Registry.getCurrentTenant().getCache().setEnabled(false);中提到的代码禁用它

您可以通过在local.propertiescache.legacymode=true中设置来使用旧缓存。但是,这不会禁用所有缓存。

现在,如果您的问题是在查询大量对象时响应时间较低,那么您可能需要定义自己的缓存区域,并在属性中设置适当的值:

<alias name="defaultMyObjectCacheRegion" alias="myObjectCacheRegion"/>
<bean name="defaultMyObjectCacheRegion" class="de.hybris.platform.regioncache.region.impl.EHCacheRegion">
<constructor-arg name="name" value="MyObjectCacheRegion" />
<constructor-arg name="maxEntries" value="${regioncache.myObjectcacheregion.maxentries}" />
<constructor-arg name="evictionPolicy" value="${regioncache.myObjectcacheregion.evictionpolicy}" />
<constructor-arg name="statsEnabled" value="${regioncache.stats.enabled}" />
<constructor-arg name="exclusiveComputation" value="${regioncache.exclusivecomputation}" />
<property name="handledTypes">
<array>
<value>[MyObject typecode]</value>
</array>
</property>

总之,你不应该尝试禁用hybris缓存,这几乎是不可能的。但为了测试目的,您可以很容易地清除它。如果您有性能问题,我建议您也查看DB事务。这通常是一个瓶颈。请参阅:https://help.hybris.com/1808/hcd/8c7387f186691014922080f2e053216a.html

您可以手动从中删除Hybris缓存-https://localhost:9002/hac/monitoring/cache

从HAC 以提交模式运行以下作为groovy脚本

tenant.getCurrentTenant().getCache().setEnabled(false);

要重新启用它,请将false更改为true。

您是否考虑在对PointOfService的调用中添加分页?让客户端一次只请求10/100个元素。客户端随后可以请求第一个10个、第二个10个…元素。这样通话速度会快很多。它也不会塞满你的缓存,给服务器和数据库带来那么大的压力。此外,客户在处理数据时会更加安全。

最新更新