0

当我在 javascript 中使用 GET 请求获取页面时,浏览器是否以与单击该链接或在地址栏中键入它时相同的方式缓存它?

如果没有,因为我已经获取了页面,有没有办法可以将它(以编程方式)添加到浏览器缓存中?

4

1 回答 1

0

当浏览器获取网页时,它也在使用 GET 请求。有可能所有的 GET 请求都在浏览器中通过相同的缓存机制,尽管没有规范说明它是如何工作的。

除了请求资源并让浏览器的缓存对其进行正常处理之外,没有任何编程方式可以将某些内容添加到浏览器自己的缓存中。如果您想知道是否所有常见浏览器都会以这种方式缓存它,那么您需要确保正确设置服务器端标头设置(以允许它被缓存),然后测试每个浏览器以确保它像缓存一样你要。

如果您停留在同一页面中并希望确保不会从同一页面多次请求某些内容,则可以在该页面的 javascript 代码中实现自己的缓存。您只需在第一次请求结果时将结果存储在 javascript 变量中,然后您实现的用于获取此资源的函数只是检查您自己的本地存储对象以查看资源是否已在此处。如果没有,它通过 GET 请求它,然后保存结果。您可以制作一个简单的版本,将其硬编码到一个特定的资源中,或者制作一个更通用的版本,保存 URL 和结果以及时间戳并实现更典型的缓存行为。

如果您希望它跨页面缓存并且您的测试发现内置浏览器缓存不够,那么您可以使用本地存储来存储数据(可能带有时间戳),然后在请求之前检查本地存储使用 GET 请求。

于 2013-10-17T22:03:38.427 回答