  We consider a variant of the online caching problem where the items exhibit
dependencies among each other: an item can reside in the cache only if all its
dependent items are also in the cache. The dependency relations can form any
directed acyclic graph. These requirements arise e.g., in systems such as
CacheFlow (SOSR 2016) that cache forwarding rules for packet classification in
IP-based communication networks.
  First, we present an optimal randomized online caching algorithm which
accounts for dependencies among the items. Our randomized algorithm is $O( \log
k)$-competitive, where $k$ is the size of the cache, meaning that our algorithm
never incurs the cost of $O(\log k)$ times higher than even an optimal
algorithm that knows the future input sequence.
  Second, we consider the bypassing model, where requests can be served at a
fixed price without fetching the item and its dependencies into the cache -- a
variant of caching with dependencies introduced by Bienkowski et al. at SPAA
2017. For this setting, we give an $O( \sqrt{k \cdot \log k})$-competitive
algorithm, which significantly improves the best known competitiveness. We
conduct a small case study, to find out that our algorithm incurs on average 2x
lower cost.
