我有一个Web服务器,它以多种格式(pdf和doc文件)动态创建各种报告。这些文件需要生成相当数量的CPU,并且在两个人使用相同输入创建相同报告的情况下,这种情况相当普遍。
输入:
当用户尝试生成报告时,我想检查一个文件是否已经存在给定输入,如果是,则返回该文件的链接。如果该文件尚不存在,那么我想根据需要生成它。
那里有什么解决方案?我以前缓存过简单的http请求,但密钥非常简单(通常是数据库ID)
如果我必须自己做,最好的方法是什么。输入可以是几百个单词,我想知道如何将字符串转换为发送到缓存的密钥。
//整个输入,使用太多内存,一对一映射 缓存['一二三四有五六七八九十一......'] //短按键 cache ['one two'] => 5结果,那么我必须将这些缩小甚至更多
这是应该在数据库中完成的,还是在Web应用程序代码中更好(在我的情况下是python)
谢谢大家。
答案 0 :(得分:2)
这就是Apache的用途。
创建一个包含报告的目录。
配置Apache以提供该目录中的文件。
如果报告存在,请重定向到Apache将提供的URL。
否则,报告不存在,因此请创建它。然后重定向到Apache将提供的URL。
没有“散列”。你有一把钥匙(“一个字符串(方程式,数字和单词列表),任意长度,几乎99%将少于约200字”)和一个值,这是一个文件。不要在哈希上浪费时间。你只需要一把长钥匙。
你可以通过制作一个“slug”来压缩这个键:删除标点符号,用_替换空格,等等。
您应该创建一个内部代理键,它是一个简单的整数。
您只是将长密钥转换为“报告”,该报告既可以作为文件存在,也可以创建为文件。
答案 1 :(得分:1)