# Module CamlTemplate.Cache

    module Cache: sig .. end

Caches templates.

# Customising How Source Code is Loaded

`type ``source_check_result =`

`|` | `TemplateUnchanged` | `(*` | `Indicates that the source code of the checked template has not changed since it was loaded.` | `*)`
`|` | `TemplateChanged` | `(*` | `Indicates that the source code of the checked template has changed since it was loaded.` | `*)`
`|` | `TemplateDeleted` | `(*` | `Indicates that the source code of the checked template was deleted since it was loaded.` | `*)`

The type returned by a template source loader when it checks whether a template's source code has changed.

    class type source_loader = object .. end

An implementation of this class type can be used by a template cache to load template source code.

    val as_source_loader : #source_loader -> source_loader

Upcasting function for `CamlTemplate.Cache.source_loader`.

    val make_file_loader : template_dir:string -> source_loader

Returns a `CamlTemplate.Cache.source_loader` that loads template source code from files in a directory. The name of each template is used as the filename.
`template_dir` : the directory in which the template source files are located.

# Using Template Caches

    type t

The type of template caches.

    val create : ?loader:source_loader ->
           ?check_interval:float -> unit -> t

Creates a template cache.
`loader` : the `source_loader` that will be used to load template source code for the cache. If omitted, the cache uses a `source_loader` that loads template source code from the current working directory.
`check_interval` : the interval at which the template cache should be refreshed. The default is 5 minutes. If the interval is zero, the cache will be refreshed every time `CamlTemplate.Cache.get_template` is called. If the interval is negative, it will never be refreshed.

    val get_template : cache:t -> template_name:string -> CamlTemplate.template

Given a cache and the name of a template, returns the template from the cache. If the template is not in the cache, it is loaded and cached.

If the cache is due to be refreshed, this method refreshes the cache (i.e. reloads any templates that have been modified since they were last loaded, and removes any deleted templates from the cache) before looking for the requested template.
Raises `CamlTemplate.Syntax_error` if a template cannot be parsed.