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

时间:2012-10-15 21:00:50

标签: php javascript mysql api

我正在重构一个API,其中有一个配置文件表中的用户配置文件和一个单独的表中的配置文件图像。目前,API查询配置文件表,然后在图像表中循环以获取相关的图像数据(路径等)。内置逻辑,在未设置配置文件图像时添加默认img路径。因此,如果我们显示50个配置文件,则会运行51个查询。

我正在考虑重构初始配置文件查询加入图像表的位置。我现在离开两个选项

  1. 我可以遍历结果服务器端来构建图像路径。我将不得不再次在客户端循环显示结果。
  2. 我可以在一次客户端循环结果并在那里构建图像路径。路径逻辑很简单,if语句很简单。
  3. 似乎2是合乎逻辑的选择。但是吗?我想这是一个更大问题的一部分,当你构建API和客户端接口何时将代码从服务器移动到客户端以保持API快速降低浏览器速度的风险?你是怎么做这种舞蹈的?我正在使用Node为jquery datatables插件开发另一个API,其中需要更多的代码来结合后端,而且确定我应该将多少资源移交给浏览器这是一场拉锯战。如果您的访问者浏览器崩溃,那么快速API并没有多大用处。

3 个答案:

答案 0 :(得分:1)

对我的决定小费,将是 我是通过暴露组件路径的一部分,所以客户端可以构建它,暴露我不想要的东西。

VS

我是通过构建映像路径服务器端来完成客户端可能不需要的工作,还是客户端可能需要重做,例如偶尔将它们砍掉。

在传递的数据超出需要的数量方面,我没有看到你所说的问题,第一个问题是我最优先考虑的问题。

在这种情况下的拉伸类型,但客户端必须知道如何组成图像路径,设置一些约束,而如果它完全在服务器端完成,则隐藏实现细节。尽管它们很简单,但这将是我的默认选项

正如你所说,这是一场拉锯战。另一种看待这样的问题的方法是,“正确”的答案取决于你何时提出这个问题。你可以单向走一段时间,然后弹出一些新的要求,现在它是错误的......

简单而一致是我们的目标。最好的吗? 20/20后见之明。

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

从存储图像的方式中抽象(db或vfs图像更快但直接文件 - 至少具有较小的MRU缓存 - 更易于维护)。

解决方案numero uno是正确的方法。

它更简单,更“安静”。我是客户逻辑的忠实粉丝,但我们应该将它用于一个好的原因(例如Soopa-UI)。 db逻辑代码与服务器逻辑代码相同。我不喜欢sql并且不得不维持另一层问题,但我确实理解它在某些情况下对最终结果的区别。

编辑:哦......你只存储路径。 因此,如果您没有做一些花哨的单页Web应用程序,那么构建路径客户端方面还有另一个问题。在他的图像开始加载之前,客户端必须等待脚本完成加载。