Php 在MVC中缓存图像的设计模式?

Php 在MVC中缓存图像的设计模式?,php,image,model-view-controller,caching,single-responsibility-principle,Php,Image,Model View Controller,Caching,Single Responsibility Principle,我正在设计一个图像缓存系统,将在MVC CMS中使用。图像缓存器的主要用途是修改图像:缩放、裁剪等,并将其缓存在客户端站点中 我已经创建了一个与数据库交互的图像缓存模型和映射器,以跟踪图像并知道对其应用了何种操作(缩放、裁剪等) 除了模型和映射器之外,我还创建了一个ImageCacher类,API使用该类根据客户端站点传递的参数管理模型和图像创建,该类创建图像并生成指向视图图像的链接 一位同事认为我需要在模型中包含最后一个类的功能,因为大部分逻辑应该放在模型中 我不同意他的观点,因为我觉得模型的

我正在设计一个图像缓存系统,将在MVC CMS中使用。图像缓存器的主要用途是修改图像:缩放、裁剪等,并将其缓存在客户端站点中

我已经创建了一个与数据库交互的图像缓存模型和映射器,以跟踪图像并知道对其应用了何种操作(缩放、裁剪等)

除了模型和映射器之外,我还创建了一个ImageCacher类,API使用该类根据客户端站点传递的参数管理模型和图像创建,该类创建图像并生成指向视图图像的链接

一位同事认为我需要在模型中包含最后一个类的功能,因为大部分逻辑应该放在模型中

我不同意他的观点,因为我觉得模型的责任是处理数据库级别缓存的图像信息,ImageCacher类的责任是创建我们将缓存的url/图像(保持单一责任原则)。除此之外,我认为模型不应该具有与表示相关的功能,比如创建或显示图像

有人对此有什么见解吗?是否有一种特殊的设计模式可以使任务划分清晰,并且图像缓存器可以重用?我应该在模型中添加所有逻辑吗


谢谢。

在我看来,为了一个有问题的结果付出了太多的努力。您正在构建所有逻辑,花费CPU和SQL资源来找出哪个客户端缓存了哪些图像,而客户端缓存是一种不可靠的存储方式。我不知道您的应用程序的性质,但是如果多个客户端使用相同的图像文件(调整大小、裁剪等),那么首先将它们存储在客户端是不经济的


Re。您的问题是,IMO模型是存储逻辑的地方,因为它在模型中时更易于重用。

感谢您的重播,一旦映像缓存在客户端,只要映像存在,我们就不会联系服务器(不会查询数据库)。如果客户端中没有映像,我们将调用服务器并请求传输映像。另一方面,如果在服务器中更改了映像,服务器将“ping”客户机并请求删除映像,因此客户机下次尝试打开映像时将从服务器请求它。我相信我们可以通过这种方式减少对服务器的调用和查询。不太可能使用相同的图像为什么不允许浏览器/客户端执行此操作?如果以正确的方式设置缓存头,则客户端不会每次都加载物理文件。当您的浏览器获得“状态代码:304未修改”时,它将不会再次加载它们。