Skip to content

JDWX DNSQuery Cache Cache

JDW edited this page Jul 17, 2022 · 1 revision

JDWX\DNSQuery\Cache\Cache

Implements a caching interface for response packets using a PSR-6/PSR-16 cache interface as the backend.

Properties

cache

protected  cache
  • Visibility: protected

Methods

__construct

mixed JDWX\DNSQuery\Cache\Cache::__construct(?\Psr\SimpleCache\CacheInterface i_cache)

Build a new cache, optionally using an existing PSR-6/PSR-16 cache interface.

  • Visibility: public

Arguments

  • i_cache ?\Psr\SimpleCache\CacheInterface - Existing cache interface to use or null to create a simple array cache.

get

?\JDWX\DNSQuery\Packet\ResponsePacket JDWX\DNSQuery\Cache\ICache::get(string i_key)

Retrieves a cached response packet based on the provided key.

Arguments

  • i_key string - Key to look up in the cache

has

bool JDWX\DNSQuery\Cache\ICache::has(string i_key)

See if the cache has a given key.

Arguments

  • i_key string - Key to look up in the cache

putWithTTL

void JDWX\DNSQuery\Cache\BaseCache::putWithTTL(string i_key, \JDWX\DNSQuery\Packet\ResponsePacket i_rsp, int i_ttl)

Store a response in the cache with a precalculated time-to-live (TTL).

Arguments

calculateTTL

int JDWX\DNSQuery\Cache\BaseCache::calculateTTL(\JDWX\DNSQuery\Packet\ResponsePacket i_rsp)

Compute the TTL for a response packet.

Uses the lowest TTL of any RR in the response.

The downside to using one TTL for the whole object, is that we'll invalidate entries before they actually expire, causing a real lookup to happen.

The upside is that we don't need to require() each RR type in the cache, so we can look at their individual TTLs on each run. we only unserialize the actual RR object when it's get() from the cache.

Arguments

hashRequest

string JDWX\DNSQuery\Cache\ICache::hashRequest(\JDWX\DNSQuery\Packet\RequestPacket i_rsp)

Create cache hash key for a request packet.

Arguments

isTypeCacheable

bool JDWX\DNSQuery\Cache\ICache::isTypeCacheable(string i_type)

Determine if an RR type is cacheable by this implementation.

Arguments

  • i_type string - The RR type string (e.g. "A" or "OPT")

getEx

\JDWX\DNSQuery\Packet\ResponsePacket JDWX\DNSQuery\Cache\ICache::getEx(string i_key)

Same as get() but throws an exception if the key is not found.

Arguments

  • i_key string - Key to look up in the local cache

put

void JDWX\DNSQuery\Cache\ICache::put(string i_key, \JDWX\DNSQuery\Packet\ResponsePacket i_rsp)

Add a new key/response pair to the cache

Arguments

Clone this wiki locally