我的pygtk程序是一个基于xml的文档编辑器,它引用其他文档,可能是在线的,这些文档可能反过来引用其他文档。
当我加载文件时,将解析引用并加载文档(已经是异步的)。但是,这个过程在每次启动编辑器时都会重复,因此我需要一些本地缓存来为用户和托管引用文档的服务器节省带宽和时间。
有什么典型的做法吗?到目前为止,我的想法是:
- 以某种方式获取缓存目录的路径(与平台无关)
- 任何想法?
- 添加一个名为
md5(url)
的文件。 - 如果有一个缓存文件已经存在,它不比
$cache_policy_age
老,否则使用HTTP (urllib
可以这样做吗?)检查它是否已经被修改,因为它被下载。
我个人使用os.path.expanduser来寻找缓存的好地方,这在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头,并且它是一个一致的值!(并非总是如此)