我正在创建一个经常从远程网页抓取数据的网络服务。抓取这些数据后,我有一个简单的多维信息数组可供使用。抓取过程对我的服务器来说相当繁重,并且页面加载需要一段时间。我正在考虑使用 MySQL 数据库添加一个简单的缓存系统,在该系统中,我为每个远程网页创建一行,并将从中提取的信息数组存储为 JSON 编码字符串。这是一个足够好的系统吗?或者每个网页一个文本文件之类的东西会更好吗?
最佳答案
由于您要抓取多个网页,并且希望持久缓存数据,因此您有几种选择 - 其中最好的选择是使用 memcache 或 MySQL 等数据库。使用文本文件不是一个好主意,因为您必须序列化/反序列化数据,并从文件系统中读取。查询数据库或内存缓存的效率要高很多倍。
由于您可能希望缓存具有一定的持久性,因此我建议使用 MySQL。您只需创建一个具有自动递增主键的表,该主键是解析的 JSON 对象中每个元素的一列。 (请注意,MySQL 目前不支持数组。为了模拟它们,您需要使用关系表,或者序列化数组数据并将其提供给文本字段。首选前一种方法)。
每次抓取页面时,您都会运行 UPDATE
语句来更新数据库中该单个页面的信息。如果您对用于唯一标识页面(URL/等)的任何内容指定唯一索引,您将获得最佳的查找性能。
关于php - 在MySQL数据库中创建PHP缓存系统?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2925380/