当前位置: 首页 > 面试题库 >

如何在golang中缓存http.Response?

农存
2023-03-14
问题内容
req, err := http.NewRequest("GET", "http://example.com", nil)
req.AddCookie(&http.Cookie{Name: "c", Value: "ccc"})
resp, err := client.Do(req)

从缓存还原后,我需要在磁盘上缓存resp并保持其类型为http.Response。有任何想法吗?


问题答案:

最简单的方法是使用httputil.DumpResponse和http.ReadResponse。

请参阅此处的示例。(您必须将代码复制到本地计算机上并在本地计算机上运行,​​因为Playground不允许I
/ O)

第一个将接收到的请求转储到内存中的[]字节中,然后可以将其写入磁盘,然后将其转储到正文中。稍后,您可以从磁盘(或存储它的位置)中读取响应,并将其包装在bufio.Reader中,并将其传递给http.ReadResponse。

ReadResponse将*
http.Request作为第二个参数,用作响应的Request字段的值。如果给出nil,则返回的Response将在其Request字段中具有GET请求。



 类似资料:
  • 问题内容: 当我启用gomodules并构建go程序时,将下载所需的软件包。 但我不能找到他们或。 它们存储在哪里? 问题答案: 对于Go 1.11,它们存储在

  • 问题内容: 我正在用Go编写一个简单的Web应用程序,并且希望将响应流传输到客户端(即,在请求得到完全处理后,不要缓冲并以块的形式发送): 从客户端的角度来看,这两行将同时发送。任何建议表示赞赏:) @dystroy答案后编辑 我个人进行的每次写完后都可以刷新,但是在我的用例中,这还不够: 我也希望刷新我的输出。无论如何“自动刷新” ResponseWritter? 解 我在golang的邮件列表

  • 问题内容: 我在Go中实现了HTTP服务器。 对于每个请求,我需要为一个特定的结构创建数百个对象,并且我有大约10个这样的结构。因此,按照Go实现完成请求后,将对其进行垃圾回收。 因此,对于每个请求,将分配和释放大量的内存。 相反,我想实现内存池以提高分配端以及GC端的性能。 在请求开始时,我将从池中取出并在请求处理后放回去 从池实施方面 如何分配和取消分配特定类型结构的内存? 如何跟踪此内存已分

  • 问题内容: 如何在WAMP中安装内存缓存? 我在中找不到任何php_memche 。 现在我该怎么做? @瑞安 感谢您的步骤,现在在WAMP中启用了内存缓存,我也已经在PHPINFO中进行了交叉检查。正在显示内存缓存。 我已经尝试过以下示例Memcache示例。但是抛出错误。 收到以下通知错误。 我错过了… 问题答案: 以下是对我有用的步骤: 所需文件 直接链接 Windows DLL文件 适用于

  • 问题内容: 在我的Web应用程序中,当用户注销时,他应该无权访问他登录时先前查看过的页面。但是,由于浏览器缓存,他可以在单击后退按钮时查看这些页面。 我定义了一个拦截器来处理此问题: 并在: 发生的事情是,添加此代码后,运行应用程序时出现404错误。 我尝试在页面中添加响应标题: 但是必须将它一个接一个地添加到所有页面上是很麻烦的。另外,用户始终可以重新提交表单并再次访问那些页面,而无需实际输入其

  • 问题内容: 我和我的朋友们在一个网站上工作,我们希望在其中缓存某些图像,以便将来更快地显示它们。我有两个主要问题: 您如何缓存图像? 图像被缓存后如何使用?(只是为了验证图像是否在页面A上缓存,可以从缓存中调用它以在页面B上使用它,对吗?) 此外,有可能设置 时, 图像的缓存版本将到期? 如果包括示例和/或进一步描述页面的链接,将不胜感激。 使用原始Javascript或jQuery版本都可以。