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

CopyrightCopyright (C) 2009 Uwe Schmidt
LicenseMIT
MaintainerUwe Schmidt (uwe@fh-wedel.de)
Stabilityexperimental
Portabilityportable
Safe HaskellNone
LanguageHaskell2010

Text.XML.HXT.Arrow.XmlCache

Description

Caching of XML document trees and other binary data

Synopsis

Documentation

withCache :: String -> Int -> Bool -> SysConfig Source #

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 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 :: SysConfig Source #

Disable use of cache

isInCache :: IOStateArrow s String String Source #

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 Integer Source #

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