Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/436.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 有没有办法在客户端有限时间缓存JSON,以避免用户访问同一页面两次时向API发出两个GET请求_Javascript_Vue.js - Fatal编程技术网

Javascript 有没有办法在客户端有限时间缓存JSON,以避免用户访问同一页面两次时向API发出两个GET请求

Javascript 有没有办法在客户端有限时间缓存JSON,以避免用户访问同一页面两次时向API发出两个GET请求,javascript,vue.js,Javascript,Vue.js,想象一下这个场景-一个用户访问他们在URL/user/username上的配置文件页面,加载到这个URL上的组件必须向API发出一个GET请求,以获取关于使用该用户名的用户的信息。但是,到目前为止还不错,如果用户访问另一个URL,然后决定使用URL/user/username返回配置文件页面,组件对之前获得的相同信息发出一个新的GET请求,这导致了两个缺点——信息不会立即出现,因为组件必须等待GET请求,而我正在对API进行第二次调用 这就是为什么我想知道是否有可能以某种方式缓存该信息,以便当用

想象一下这个场景-一个用户访问他们在URL
/user/username
上的配置文件页面,加载到这个URL上的组件必须向API发出一个GET请求,以获取关于使用该用户名的用户的信息。但是,到目前为止还不错,如果用户访问另一个URL,然后决定使用URL
/user/username
返回配置文件页面,组件对之前获得的相同信息发出一个新的GET请求,这导致了两个缺点——信息不会立即出现,因为组件必须等待GET请求,而我正在对API进行第二次调用

这就是为什么我想知道是否有可能以某种方式缓存该信息,以便当用户再次访问其配置文件页面时,组件不必发出第二个GET请求。此外,这些缓存的信息应该能够在一段时间(如一小时)后过期,这样它就永远不会不准确

这是可以实现的并且值得吗?

您可以使用浏览器或WebSql或在浏览器上存储数据,但要小心,它们的大小是有限的


您应该在客户端缓存数据,这样您将有更多的权限来管理数据(缓存大小、刷新缓存等)

我个人会首先尝试“Sudhakar RS”提到的http缓存解决方案,但接下来我会尝试会话存储。还有。当然,您的数据在会话中是有效的。如果您的会话时间超过您提到的时间,您必须手动处理该会话,将其作为使用时间戳保存的数据的一部分。我认为所有会话存储数据都有5MB的限制。如果你还需要更多,我会按照“洪阮”的建议去做。

给你一个建议read@SudhakarRS这就是静态缓存,我想这个问题是关于api响应缓存的