---
name: "HTML::Mason::Cache::BaseCache"
section: "3pm"
platform: "linux"
package: "libhtml-mason-perl"
version: "1:1.60-2"
release: "Debian 13 (Trixie)"
platforms: ["linux"]
url: "https://new.carta.tech/HTML::Mason::Cache::BaseCache"
---

# HTML::Mason::Cache::BaseCache(3pm)

Base cache object

## NAME

HTML::Mason::Cache::BaseCache - Base cache object

## DESCRIPTION

This is the base module for all cache implementations used in Mason. It provides a few additional methods on top of `"Cache::BaseCache"` in Dewitt Clinton's `"Cache::Cache"` package.

An object of this class is returned from `$m`-\>cache.

## METHODS

- clear ()

  Remove all values in the cache.

- get (key, \[%params\])

  Returns the value associated with *key* or undef if it is non-existent or expired. This is extended with the following optional name/value parameters:

  - busy\_lock =\> duration

    If the value has expired, set its expiration time to the current time plus *duration* (instead of removing it from the cache) before returning undef. This is used to prevent multiple processes from recomputing the same expensive value simultaneously. The *duration* may be of any form acceptable to set.

  - expire\_if =\> sub

    If the value exists and has not expired, call *sub* with the cache object as a single parameter. If *sub* returns a true value, expire the value.

- get\_object (key)

  Returns the underlying `"Cache::Object"` object associated with *key*. The most useful methods on this object are

  ```
      $co->get_created_at();    # when was object stored in cache
      $co->get_accessed_at();   # when was object last accessed
      $co->get_expires_at();    # when does object expire
  ```

- expire (key)

  Expires the value associated with *key*, if it exists. Differs from remove only in that the cache object is left around, e.g. for retrieval by get\_object.

- remove (key)

  Removes the cache object associated with *key*, if it exists.

- set (key, data, \[duration\])

  Associates *data* with *key* in the cache. *duration* indicates the time until the value should be erased.  If *duration* is unspecified, the value will never expire by time.

  *$expires\_in* may be a simple number of seconds, or a string of the form "\[number\] \[unit\]", e.g., "10 minutes".  The valid units are s, second, seconds, sec, m, minute, minutes, min, h, hour, hours, d, day, days, w, week, weeks, M, month, months, y, year, and years.
