【问题标题】:Server side or Javascript calculations?服务器端或 Javascript 计算?
【发布时间】:2012-03-31 03:24:13
【问题描述】:

一般来说,在服务器端还是在 javascript 端进行大量数据计算对性能更好?

我有一堆数据显示在页面上 - 我想知道我是否应该在服务器端(在 python 中)对这些数据进行格式化/解析/计算并返回一个模板,或者我是否应该应该按原样返回数据并在 javascript 端进行所有计算/格式化?

在做出这些决定时是否有任何一般的经验法则?

我正在计算的示例 - 将时间戳转换为日期。

【问题讨论】:

  • 对于像每个用户可能在不同时区的日期这样的事情,将它放在客户端可以让您的页面更易于缓存。
  • 如果您可以将计算卸载给用户,那就更好了。但是如果计算是基于大量数据,那么您将不得不平衡服务器 cpu 时间节省与向客户端发送原始数据会增加带宽成本。

标签: javascript python django django-templates


【解决方案1】:

这在很大程度上取决于您要做什么。如果图表是动态的和动画的,那么在客户端使用 js 可能是唯一的选择。这还取决于您拥有多少数据。如果您有超过 10mb 的原始数据,我不建议在 js 中执行此操作。

【讨论】:

    【解决方案2】:

    首先,您应该考虑更改数据格式以存储用于显示的数据。它应该已经以方便的方式存储以显示它 - 这根本不需要任何处理。

    如果您仍需要重新计算一些数据,请考虑在服务器端进行,因为这样可以缓存此结果(例如在 mamceched 中),因为在每次页面刷新时计算它们是没有意义的。

    最糟糕的选择是在客户端重新计算它们,因为这可能会在客户端浏览器上带来难以检测到的明显性能问题(例如,在更大的数据上),并且您可能无法在测试环境中看到此类问题(您可以看到您的服务器正在变慢,但很难看到某些客户端将您的页面呈现得很慢 - 除非他们写信给您)。

    【讨论】:

      【解决方案3】:

      除了 thedk 陈述的事实之外,您还应该记住,您在客户端进行的计算更有可能失败,因为客户端可能不满足某些先决条件。想想禁用的 JavaScript 或不可靠的互联网连接。一旦数据离开服务器,您通常无法控制数据。

      因此,强烈建议只将不重要的计算转移到客户端。日期时间格式之类的东西可能没问题,但不要尝试用 JavaScript 解析整个网站。即使客户端禁用了 JavaScript,您的网站也应该可以正常工作(并且看起来可以接受)。

      【讨论】:

        猜你喜欢
        • 2017-08-25
        • 2011-11-26
        • 1970-01-01
        • 1970-01-01
        • 2015-12-11
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2014-07-05
        相关资源
        最近更新 更多