当我在javascript中使用GET请求获取页面时,浏览器是否以与单击该链接或在地址栏中键入时相同的方式对其进行缓存?
如果没有,因为我已经提取了页面,有没有办法可以将它(以编程方式)添加到浏览器缓存中?
答案 0 :(得分:0)
当浏览器提取网页时,它也使用GET请求。有可能所有GET请求都在浏览器中通过相同的缓存机制,尽管没有规范可以规范它的工作方式。
除了仅仅请求资源并让浏览器的缓存使其正常运行之外,没有以编程方式向浏览器自己的缓存添加内容。如果您想知道所有常见浏览器是否会以这种方式缓存它,那么您需要确保服务器端标头设置已正确设置(以允许它被缓存),然后测试每个浏览器以确保它&#39 ; s缓存就像你想要的那样。
如果您要停留在同一页面中,并且想要确保在同一页面中不会多次请求某些内容,则可以在该页面的javascript代码中实现自己的缓存。您只需在第一次请求时将结果存储在javascript变量中,然后您实现的用于获取此资源的函数只检查您自己的本地存储对象以查看该资源是否已在此处。如果没有,它通过GET请求它,然后保存结果。您可以创建一个简单版本的硬编码到一个特定资源或更通用的版本,保存URL和结果以及时间戳并实现更典型的缓存行为。
如果您希望跨页面缓存它并且您的测试发现内置浏览器缓存不足,那么您可以使用本地存储来存储数据(可能带有时间戳),然后只检查本地存储在通过GET请求请求它之前。