It can also be used for caching other files; a useful capability to have when a cached file can be used as a response to some other "partially dynamic" request. For example, it can be used to save directory listings (say, as created by the _DIR addon).
To clarify, the file-cache-daemon associates a temporary file to an identifier. This temporary file typically contains generated output. For example, if the identifier is a selector pointing to a SHTML file, then the temporary file could contain the compiled results (the file after the SSIs have been replaced). By using this temporary file, SREhttp/2 can save time (by avoiding the processing needed to insert the SSIs in the original SHTML file).
Thus, the file-cache daemon stores, and returns, file names. It does not store actual content. To store actual content, you can use the SRE2003 SRE_CACHE procedure.
The rest of this document describe the SREH2_FILE_CACHE procedure; a procedure that is designed to work with the file-cache daemon.
id_name | A string that identifies a cache entry. This is often
a selector, or a host_nickname:/selector, or a directory name.
Note that spaces are stripped from this string before it is used. |
---|---|
params | Parameters that control how to cache id_name |
msec_wait | Wait time, in milli seconds. Optional -- the default value is 30 seconds (30000). After this many seconds, the procedure gives up (it stops waiting on the cache daemon), and returns an error code. |
ownid | optional. The calling procedure's Own_ID. If you have it, supplying the OWN_ID can speed up processing a bit. |
action | An action to take.
Valid actions are:GET PUT INFO RESET REMOVE Note that if action is not specified, then:
|
astat | depends on action |
GET |
Lookup the entry matching ID_NAME. If no match, return 0. If match ... If HASH trigger type was used (see PUT for the details), then PARAMS should contain the current hash value for the object that ID_NAME refers to. If this is different then the one that the ID_NAME was saved with, then return 0 (and remove this ID_NAME entry). Otherwise, check the trigger files to see if none of them have changed. If any of them have, return 0 (and remove this ID_NAME entry). Astat will be one of: 0 == no match (or fatal error) 1 filename == use the cache in "filename" as is 2 filename == read filename, and perform more operations on it 3 == The object (say, an SHTML file) referred to by ID_NAME is known to not require caching |
|
---|---|---|
PUT | Store an entry under ID_NAMEPARAMS contains information denoting what file to store, and how to store it. Note that astat is always 1 PARAMS has the following syntax: var = value ; var = value ; ... Currently supported VARs are: FILE = filename The filename (fully qualified) to store This is REQUIRED. TRIGGERS= file1 file2 ... A space delimited list of (fully qualified) filenames to use as "trigger files". Typically, you SHOULD include the "filename" (used in FILE) in this list. Alternatively, you can use HASH instead of TRIGGERS. HASH = a_word A_WORD is a string that contains NO spaces. Often, this is a CRC hash of some larger object. This is ignored if TRIGGER_TYPE <> 'HASH' TRIGGER_TYPE = types Types can be one of the following: ALL DATE TIME DATETIME SIZE or HASH STATUS= Indicates what sort of cache this is. ASIS : cached file should be used "as is" PARTIAL : cached file should be further processed NOSSI : there is no cached file associated with this entry; but one is not needed (the object pointed to by ID_NAME can be used without any modification) These values are used with future GET actions -- they influence the value of astat (the returned value). DURATION= lifespan of file (in days). Entries older then this are removed. |
|
INFO | Return the current set of cached information, in a mime-like list. If ID_NAME not specified, return for all entries. Otherwise, return for the record matching ID_NAME. | |
RESET | Remove all entries from the cache. astat will be a message of the form 15 file-cache records removed |
|
REMOVE | Remove the entry that matches ID_NAME
Astat will be either 0 or 1, where: 0 = no such entry 1 = entry succesfully removed |