js检测firefox3是否读取了缓存页面
firefox 3 浏览器会忽略
等标签。详情请参看 https://bugzilla.mozilla.org/show_bug.cgi?id=327790#c8.
这样在某些情况下即使用户使用强制刷新页面,firefox仍然会去读取他的高速缓存,而根本没去请求服务器。
在ecmall后台使用的一个解决方法是:在页面onload事件中,用js去检测当前页面是否是缓存页面,如果是,则在但前页面url后面加上一个时间戳后,在reload一下,就能获取到最新的页面。
检测原理如下:
服务器每次请求都把请求时间写入cookie,要防止缓存的页面把页面修改时间也该改当前请求时间。页面onload事件中用js检查是否两个事件是否一致,如果页面修改时间小于cookie中时间,说明该页面是从高速缓存中读取的。
php中设置cooke请求时间代码:
set_cooke(‘lastModified’, gmdate(‘D, d M Y H:i:s’));
php设置稳定修改时间代码:
header(‘Last-Modified: ‘. gmdate(‘D, d M Y H:i:s’) . ‘ GMT’); //last modified
js检测代码
//只有firefox 3 才检查
if (navigator.userAgent.toLowerCase().indexOf(“firefox/3″) != – 1){
$doc_last_date = new Date(document.lastModified);
//document.getCookie 是emall获取cooke的一个函数,具体代码会js都应该知道吧
$cookie_last_date = new Date(document.getCookie(‘lastModified’).replace(/\+/g, ‘ [...]