Php API显示逻辑服务器端或客户端

Php API显示逻辑服务器端或客户端,php,javascript,mysql,api,Php,Javascript,Mysql,Api,我正在重构一个API,其中有一个profiles表中的用户配置文件和另一个表中的配置文件图像。当前,API查询概要文件表,然后在images表中循环查找相关的图像数据(路径等)。有一种内置的逻辑,在未设置配置文件映像时添加默认img路径。因此,如果我们显示50个配置文件,则有51个查询正在运行 我正在考虑在初始概要文件查询连接图像表的地方进行重构。我现在剩下两个选项 我可以在结果服务器端循环构建映像路径。我将不得不在客户端再次遍历它们以显示结果 我可以在客户端一次遍历结果,并在那里构建映像路径。

我正在重构一个API,其中有一个profiles表中的用户配置文件和另一个表中的配置文件图像。当前,API查询概要文件表,然后在images表中循环查找相关的图像数据(路径等)。有一种内置的逻辑,在未设置配置文件映像时添加默认img路径。因此,如果我们显示50个配置文件,则有51个查询正在运行

我正在考虑在初始概要文件查询连接图像表的地方进行重构。我现在剩下两个选项

  • 我可以在结果服务器端循环构建映像路径。我将不得不在客户端再次遍历它们以显示结果
  • 我可以在客户端一次遍历结果,并在那里构建映像路径。路径逻辑很简单,是一个简单的if语句

  • 看来2是合乎逻辑的选择。但是是吗?我想这是一个更大问题的一部分,即当您构建API和客户端接口时,您何时将代码从服务器移动到客户端以保持API的快速,从而降低浏览器的速度?你是怎么跳这个舞的?我正在为jquery datatables插件开发另一个使用Node的API,其中需要更多的代码才能与后端相结合,而且在决定我应该将多少代码交给浏览器时,这有点像拔河。如果你正在使访问者的浏览器崩溃,那么快速API就没有多大用处。

    当我在过去看到并做过这件事时,我发现最好不要在数据库中存储图像(就像听起来你正在做的那样)。将它们放置在浏览器可以链接到它们并从服务器传递路径的位置

    给我的小费是 我是通过公开部分组件路径来实现的,这样客户端就可以构建它,公开一些我不想公开的东西

    vs

    我是通过在服务器端构建映像路径来完成客户机可能不需要的工作,或者客户机可能需要重做的工作,比如偶尔将它们切碎

    在传递超出需要的数据方面,我看不出你所说的有什么问题,第一个问题对我来说是最重要的

    在这个场景中有点牵强,但是客户端必须知道如何组合映像路径,因此设置了一些约束,而如果所有这些都在服务器端完成,则实现细节将被隐藏。尽管它们很简单,但这将是我的默认选择

    正如你所说,这是一场拔河比赛。看待这类问题的另一种方式是“正确”的答案取决于你何时提出问题。你可以走一条路,过一段时间,一些新的需求突然出现,而现在它是错误的


    简单和一致是我们的目标。对吗?20/20事后诸葛亮。

    如果我理解正确的话。。您正在显示某种配置文件列表,其中每个配置文件都有关联的图像。。。对吧?

    从存储图像的方式进行抽象(db或vfs图像速度更快,但直接文件(至少有少量MRU缓存)更易于维护)

    解决方案编号是正确的选择

    它只是更简单、更“宁静”。我非常喜欢客户端逻辑,但我们应该将其用于一个好的目的(比如SoopaUI)。db逻辑代码和服务器逻辑代码也是如此。我不喜欢sql,不得不维护另一层问题,但我确实理解它在某些情况下对最终结果的影响

    编辑:哦。。。您正在存储的只是路径。
    所以,如果你没有做一些奇特的单页web应用程序,那么在客户端构建路径还有另一个问题。客户端必须等待脚本完成加载,然后才能开始加载其图像。

    我想我不够清楚,我没有存储图像本身,只是存储构建图像路径所需的数据。图像在云峰上。我想知道。在这种情况下,我假设浏览器是最薄弱的环节。尽可能多地在服务器端进行渲染,并将渲染传递给客户端。如果浏览器恰好在一台结实的机器上运行,那就更好了。但如果你要求太多,而它却无法实现,你的境况会更糟。你知道你的服务器能做什么。当你问这个问题的时候,你的观点是正确的。如果将来提出的更改排队等待,解决方案2是否有意义。我想我给出了一个很好的例子,因为这是一个简单的if语句,里面只有一行。这两种方法都很容易做到,但在客户端上做起来更干净、更干爽,但这是浏览器要处理的另一项任务。