使用PHP和代理缓存加载动态图片?

时间:2012-08-30 17:37:53

标签: php image caching dynamic proxy

我是Wave Framework的开发人员,这是一个轻量级框架,其中包含许多功能,可以更轻松地部署API并动态提供资源。

其中一项功能是按需图像编辑。例如,在我的服务器上,我有这个文件:

http://www.waher.net/w/resources/images/logo.png

但是在我的HTML中,我从这样的URL加载我的图像:

http://www.waher.net/w/resources/images/160x160&logo.png

此'160x160& logo.png'文件实际上并不存在,唯一存在的文件是'logo.png'。每个HTTP请求都被路由到PHP,并解析文件URL中的参数,以便应用其他功能,如图片分辨率。

为什么这有用?如果我的系统有大量的用户头像和我的设计更改,我可以轻松更改头像图片URL,一切都按预期工作。我永远不必重新生成所有用户的所有头像,特别是那些我系统中不存在的用户,只是浪费资源。

但是这是我的问题,如果我想实现Nginx在我的服务器上提供静态文件,我的系统不起作用。这是因为如果找不到图片,Nginx将尝试自己加载静态文件并抛出404 Not Found消息。我认为Apache和Squid也是如此。

我的一位客户特别要求他们希望通过Nginx提供图像和资源,但他们仍然喜欢动态图像,以便于开发和设计。

是否可以告诉Nginx或Squid将请求发送给PHP,如果找不到图像文件本身,从PHP获取“动态”图像,然后通过Nginx将其发送给用户?并且同时始终在Nginx缓存中为同一文件的任何后续请求提供服务?

我想拥有动态加载图像文件的灵活性,但在提供图像文件时也具有Nginx的速度。这样的事情可能吗?我是否需要在PHP中设置允许的特定文件头? (我已经设置了缓存和过期标头)。

谢谢!

0 个答案:

没有答案