Python 从web缓存数据的好方法(和/或独立于平台的位置)

Python 从web缓存数据的好方法(和/或独立于平台的位置),python,caching,webpage,Python,Caching,Webpage,我的pygtk程序是一个基于XML的文档编辑器,它引用其他文档(可能是在线文档),而这些文档又可能引用其他文档 加载文件时,将解析引用并加载文档(已异步加载)。但是,每次启动编辑器时,这个过程都会重复,因此我需要一些本地缓存来为承载引用文档的用户和服务器节省带宽和时间 有什么典型的方法可以做到这一点吗?到目前为止,我的想法是: 以某种方式获取缓存目录的路径(独立于平台) 有什么想法吗 将名为md5(url)的文件放在那里 如果缓存文件已经存在并且不早于$cache\u policy\u a

我的pygtk程序是一个基于XML的文档编辑器,它引用其他文档(可能是在线文档),而这些文档又可能引用其他文档

加载文件时,将解析引用并加载文档(已异步加载)。但是,每次启动编辑器时,这个过程都会重复,因此我需要一些本地缓存来为承载引用文档的用户和服务器节省带宽和时间

有什么典型的方法可以做到这一点吗?到目前为止,我的想法是:

  • 以某种方式获取缓存目录的路径(独立于平台)
    • 有什么想法吗
  • 将名为
    md5(url)
    的文件放在那里
  • 如果缓存文件已经存在并且不早于
    $cache\u policy\u age
    获取它,否则使用HTTP(可以
    urllib
    这样做吗?)检查它自下载以来是否已被修改
我通常会找到一个缓存的好地方,这在unix环境中很常见,当前用户的大部分配置/缓存都保存在主目录下,使用以点开头的目录名,形成一个“隐藏”目录

我会这样做:

directory = os.path.join(os.path.expanduser("~"), ".my_cache")
至于远程文件的修改日期,您可以使用
urlib

import urllib
u = urllib.urlopen("http://www.google.com")
u.info().get("last-modified")

但是,您应该检查您的HTTP服务器是否提供了上次修改的HTTP头,以及它是否是一致的值!(情况并非总是如此)

事实上,至少可以评论一下你为什么否决这个问题。我投了赞成票——即使问题中描述的实现是个坏主意(不是说它是!),这是一个结构完美的问题。我也不明白为什么它被否决了。