public boolean shouldCacheBlockOnRead(BlockCategory category) {
    return cacheDataOnRead || category == BlockCategory.INDEX || category == BlockCategory.BLOOM
      || (prefetchOnOpen && (category != BlockCategory.META && category != BlockCategory.UNKNOWN));
  }
Should we cache a block of a particular category? We always cache important blocks such as
index blocks, as long as the block cache is available.
hbase-server/src/main/java/org/apache/hadoop/hbase/io/hfile/CacheConfig.java