如何检测浏览器是否使用网站的缓存版本?

时间:2015-11-12 07:54:29

标签: html browser web-applications

我遇到以下问题 - 我的网页上有一个时钟,我正在尝试对抗以下内容 - 如果用户转到另一个页面然后按下,则时钟会被取消同步(它应该显示服务器的时间)。我有同步时钟的机制,但我在想如何检测是否要启动它们(它们应该尽可能少地使用,因为它们很昂贵)。那么是否有一种广泛使用的方法来检测用户是否正在使用页面的缓存版本?我想到的一种方法是查看用户本地时间,如果突然之前注册的时间和现在注册的时间之间有一个跳转我可以启动机制,但是有一种更简单,通用的方式(例如 - 可能浏览器发送一些消息给沟通的网页...)?

1 个答案:

答案 0 :(得分:1)

听起来您正在允许客户端或服务器执行整页缓存,由于页面的某些部分依赖于当前服务器日期时间,因此您不需要这样做。

您当然希望从主响应的响应头中删除客户端缓存,特别是如果您在呈现页面之前需要检查任何类型的身份验证;您需要确保客户端仍然登录,例如。

您还需要从服务器中删除任何完整的响应缓存。您应该调查服务器部分或环形缓存,它允许您缓存响应的某些部分(因此它不需要计算出不会改变的静态数据;例如导航或页脚)但是会关闭并获取每个请求应更改的页面部分的新结果。

日期时间显示和响应的所有其他相关部分将被更新,但静态部分将来自服务器缓存。

此问题的一个好(且更简单)示例是您有一个页面在重新加载时显示随机图像。如果页面/响应缓存在服务器上,则每个请求的此图像将保持不变。服务器(代码)需要设置为缓存除了将由服务器更新的图像之外的关于页面的所有内容。因此,服务器(代码)只需要计算出需要应用于响应的新映像,因为页面的所有其他部分都来自服务器上的缓存。

值得注意的是,服务器缓存是全局的。如果您缓存特定响应,然后另一个用户请求同一页面,则它们将获得与其他用户相同的响应。根据系统的需要,您可能需要根据某些参数更改缓存。

相关问题