hxt-cache-9.0.1: Cache for HXT XML Documents and other binary data

Portabilityportable
Stabilityexperimental
MaintainerUwe Schmidt (uwe@fh-wedel.de)

Text.XML.HXT.Arrow.XmlCache

Description

Caching of XML document trees and other binary data

Synopsis

Documentation

withCache :: String -> Int -> Bool -> SysConfigSource

withCache enables reading documents with caching.

When the cache is configured and enabled, every document read and parsed is serialized and stored in binary form in the cache. When reading the same document again, it is just deserialized, no parsing is performed.

The cache is configured by a path pointing to a directory for storing the documents, by a maximal time span in second for valid documents. After that time span, the documents are read again and the cache is updated. The flag contols, whether documents returning 404 or other errors will be cached. If set, the cache is even activated for 404 (not found) responses, default is false.

The serialized documents can be compressed, e.g. with bzip, to save disk space and IO time. The compression can be configured by Text.XML.HXT.Arrow.XmlState.withCompression

example:

 import Text.XML.HXT.Core
 import Text.XML.HXT.Cache
 import Codec.Compression.BZip (compress, decompress)
 ...
 readDocument [ withCache "/tmp/cache" 3600 False
              , withCompression (compress, decompress)
              , ....
              ] "http://www.haskell.org/"

In the example the document is read and stored in binary serialized form under /tmp/cache. The cached document remains valid for the next hour. It is compressed, before written to disk.

withoutCache :: SysConfigSource

Disable use of cache

isInCache :: IOStateArrow s String StringSource

Predicate arrow for checking if a document is in the cache. The arrow fails if document not there or is not longer valid, else the file name is returned.

sha1HashValue :: (Arrow a, Binary b) => a b IntegerSource

Compute the SHA1 hash is hexadecimal format for an arbitray serializable value