rebol [
Title: "never cache"
File: %never-cache.r
Date: 22-Nov-2002
Version: 1.0.2
Needs: []
Author: "Anton Rolls"
Language: 'English
Purpose: {function that outputs rebol and javascript code to ensure a page is always freshly
loaded from the server}
Library: [
level: 'advanced
platform: 'all
type: 'function
domain: [html web cgi]
tested-under: "at least Rebol/View1.2.8 on WinXP, IE6.0"
support: none
license: 'mit
see-also: none
]
Usage: {
make sure never-cache.r is run before using the never-cache function.
Our system uses Brian Hawley's require function, so I recommend the following
require line in the server.r script:
require %public/lib/never-cache.r
then just include the line:
print never-cache
somewhere in your rebol cgi's (preferably near the top, before images etc.)}
ToDo: {
-
}
History: [
1.0.0 [10-Oct-2002 {First version} "Anton"]
1.0.1 [27-Oct-2002 {now simply returns a string of code, no longer print's it for you, this
allows it to be used with current implementation of embedded rebol scripting} "Anton"]
1.0.2 [22-Nov-2002 {increased default delay time to 1500} "Anton"]
]
Notes: {
This function assumes that it will be used in a rebol server-side cgi script,
and that javascript is enabled in the client browser.
I saw this as another way to force a reload from the server
location.reload(force);
}
]
never-cache: func [{print some code such that the page it appears will always be
loaded fresh from the server}
/delay ms "minimum time in milliseconds after which the page will be forced to reload (default: 1000 ms = 1 second)"
/debug "write the contents of some variables into the document"
/local days seconds-per-day time seconds milliseconds
][
if not delay [ms: 1500] ; set default value
; calculate time in milliseconds, in same format as javascript's Date.getTime()
days: (now - 1-jan-1970) ; this doesn't account for timezone (now/zone) - see below
seconds-per-day: 24.0 * 3600
time: now/time/precise
seconds: (days * seconds-per-day) + ((time/hour * 3600) + (time/minute * 60) + time/second)
seconds: seconds - to-integer now/zone ; account for timezone
milliseconds: seconds * 1000.0
rejoin [
{^/}
]
]