我们想使用类似于GMail使用的系统.当它检测到您的浏览器缓存已满时表现不正常时,它会显示一条警告消息,告知用户其缓存已满,并且可能导致GMail出现问题,以及指向Gmail Help page on clearing your browser’s cache的链接.
有没有人知道是否有任何资源,或者如何使用JavaScript来检测浏览器的缓存是否完全表现不好的示例?
谢谢.
澄清:我想,我们实际上试图检测的不是缓存是否已满,而是是否正在重新请求我们已将服务器端配置为存储在缓存中的脚本.服务器 – 这种方式使浏览器表现得很奇怪,或者就像它的缓存行为不正常一样.
进一步澄清:谢谢大家关于缓存的更新.我们的脚本正在使用正确的标题发送,我们只在IE6和IE7中看到这个问题 – Mozilla和WebKit浏览器似乎没有受到影响 – 但我仍然不确定我们究竟如何使用JavaScript和/或XmlHttpRequest检查是否从缓存中检索了一个对象,从而让我们检查缓存是否表现不佳.
解决方法
>如果浏览器缓存已满,则浏览器只需下载新内容,而不是从本地缓存中提取内容. (例如,速度较慢)
>如果浏览器缓存包含无效数据(例如JavaScript文件的旧副本),则是,您可能会遇到问题. (不是因为缓存已满,而是因为您没有为用户提供新文件(Google for:expires标头以及如何在更改脚本时更改文件的URL路径以确保“中断”高速缓存))
>在Internet Explorer中,当您将下载文件(例如Excel电子表格)推送给用户时,它必须进入缓存才能工作(IE错误) – 我不确定该文件是否大于用户的总缓存,如果这会导致存储文件的问题,并因此加载(Stackers请随时确认这种或那种方式)
更新:
根据您的说明,您需要确保发送到客户端的任何脚本都已正确缓存…这意味着:
>如果要下载新版本,请将URL更改为脚本(例如)
> http://example.com/scripts/latestThing.js?ver=3425
>从版本控制系统中提取“ver”以确保您在更改脚本时始终强制浏览器下载新的副本.
>一旦确定URL发生了变化,您就可以发送缓存标头,告诉浏览器将文件缓存很长时间(例如,您的JS库文件(例如jQuery)可能不会每小时,每天,每周或每小时更改一次.连月)