Golang缓存HTTP在内存中获取结果

Golang缓存HTTP在内存中获取结果,go,caching,web-scraping,Go,Caching,Web Scraping,我正在使用Go中的CLI,它可以将网页上所有链接的href属性收集到一个片段中。我想在内存中存储这个片段一段时间,这样就不会在每次执行CLI命令时调用scraper。理想情况下,只有在缓存过期或用户提供某种--update标志后,才会调用scraper 我偶然发现了这个库和其他类似的库,但从我所知道的,它们只适用于持续运行的东西,比如服务器 我曾想过将链接写入一个文件,但在一段特定的时间后,我将如何使结果过期?在后台创建一个小型服务器,在一段时间后关闭,以便使用像go cache这样的库,这样做

我正在使用Go中的CLI,它可以将网页上所有链接的href属性收集到一个片段中。我想在内存中存储这个片段一段时间,这样就不会在每次执行CLI命令时调用scraper。理想情况下,只有在缓存过期或用户提供某种
--update
标志后,才会调用scraper

我偶然发现了这个库和其他类似的库,但从我所知道的,它们只适用于持续运行的东西,比如服务器


我曾想过将链接写入一个文件,但在一段特定的时间后,我将如何使结果过期?在后台创建一个小型服务器,在一段时间后关闭,以便使用像
go cache
这样的库,这样做有意义吗?感谢您的帮助。

使用数据库并尽可能多地存储详细信息(获取地址、主机、路径、标题、元数据描述、锚定等)。稍后您将能够查询数据,以结构化格式进行查询将非常有用。如果不想处理db依赖关系,可以嵌入类似于boltdb(纯go)或sqlite(cgo)的内容

在这些场景中有两种主要方法:

  • 创建充当数据存储库的守护程序、服务或后台应用程序。根据需要,您可以将其作为HTTP服务器/RPC服务器运行。然后,您的CLI应用程序将根据需要与此守护进程进行交互

  • 实现一种持久化机制,该机制允许跨多个CLI应用程序执行写入和读取数据。您可以使用普通的文本文件、数据库,甚至golang的编码/gob实现,在二进制文件中写入和读取切片(地图可能更好)

  • 根据上面选择的策略/方法,您可以为条目添加时间戳,并在ttl过期后通过显式删除条目或在后续执行期间不重写条目来删除条目


    此类开放式问题的范围和示例数量太多,无法在一个答案中发布,很可能需要多个具体问题。

    谢谢您的建议!对于这样一个小的CLI,我觉得使用数据库或服务器太过分了。我只是刮一个网页,有谢谢!我得看看boltdb。