我是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 中设置允许这样做的特定文件头?(我已经设置了缓存和过期标头)。
谢谢!