我正在写我自己的静态网页内容传递例程。对于缓存我计划包括散列在URL中像哈希文件服务静态内容Web服务器
/static/file.MD5HASH.png
我在一个静态的编译语言开发。我读 https://docs.djangoproject.com/en/dev/ref/contrib/staticfiles/#cachedstaticfilesstorage 和 https://gist.github.com/3207357
现在我的心理问题是如何有效地确定一个文件的哈希?我不会计算每次向服务器发送请求时的散列值。所以我需要一些缓存。
我可以写一个程序,帮助这需要的路径,静态内容,递归计算哈希和存储结果作为
filename.png HASH
在一个名为.cache.hash.lookup文件。该文件在每个请求上都会加载到Web服务器的启动和状态中,因此当静态文件即将被提供时,它将在缓存中查找它,并且如果缓存已过期,请重新加载缓存。
这可行吗?请我不需要建议如何使用框架X来完成它,因为我想理解它并编写自己的例程。
那么,存储多个版本的文件是Django的cachedstatic文件的细节。 我的观点是,Web服务器如何快速添加所请求文件的散列,而无需在每次请求时重新创建散列。它必须保持某种散列缓存,它最好由后台进程重新验证,后台进程在文件更改后立即重新计算文件散列值。 – JohnDoe
我或你不明白这个机制是如何工作的:在设计时散列被添加到文件名中,所以引用该资源的HTML已经有一个URL,如/static/file.MD5HASH.png服务器不需要知道关于运行时怪异文件名的语义。这就是要求的,这就是文件系统中的内容。文件系统完整性验证不受Web服务器的关注。 – Szocske