在我的Apache服务器上,我有一个PHP服务来获取请求并从它们生成一个图像。我想要做的是将生成的图像缓存在我的服务器(非客户端的浏览器)上,因此如果具有特定参数的图像已经生成并且有人请求它,我的web服务器将返回缓存图像,而不是生成新的一个。Apache服务器缓存图像
我知道我可以将生成的图像手动存储在服务器上,并在每次请求时检查它们是否存在,然后运行cron任务以删除过期的图像,但我正在寻找更有效的方法。
谢谢。
在我的Apache服务器上,我有一个PHP服务来获取请求并从它们生成一个图像。我想要做的是将生成的图像缓存在我的服务器(非客户端的浏览器)上,因此如果具有特定参数的图像已经生成并且有人请求它,我的web服务器将返回缓存图像,而不是生成新的一个。Apache服务器缓存图像
我知道我可以将生成的图像手动存储在服务器上,并在每次请求时检查它们是否存在,然后运行cron任务以删除过期的图像,但我正在寻找更有效的方法。
谢谢。
您已经提到了最有效的方法。将其存储在磁盘上。您可以使用类似memcache的东西,将其存储在memcache中,然后让memcache在一段时间后自动使记录失效。
就像你说的那样,将它存储在磁盘上并将其读回客户端。 您可以拥有ID.ext和ID.date,其中ID.date包含过期日期(在unix时间内)。 然后只是比较ID.date和什么时间()所说的内容,如果time()大于ID.date的内容,那么删除这两个文件并重新生成图像。
ID.date不是必需的,只需要stat()文件来获取它的创建日期。 – 2009-11-29 23:02:04
@nigative,我建议您仔细阅读关于memcached的文档并进行一些测试,因为默认情况下最大对象大小为1MB,可能比您的图片小。 http://dev.mysql.com/doc/refman/5.0/en/ha-memcached-faq.html – 2009-11-29 22:59:25
所以在那种情况下,我仍然需要处理我的PHP代码中的一切? 从请求字符串生成密钥,检查在memcache中是否存在该密钥的记录,如果存在,则返回它,否则生成一个新图像,密钥并将其存储在memcache中? – 2009-11-29 23:01:57