代码之家  ›  专栏  ›  技术社区  ›  MaLKaV_eS

如何减少Web窗体上的处理时间

  •  1
  • MaLKaV_eS  · 技术社区  · 16 年前

    我有一个包含很多字段的webform(基于用户选项,介于15到40之间)。当用户填写完表单后,我用jquery.blockui阻塞它,然后在服务器端处理表单,将其打包为XML并调用一个新页面。但是页面之间的转换通常需要1到2秒,我想减少它。

    可以在下一页上进行所有处理,因为数据随后被发送到外部Web服务并等待响应。这需要2分钟,因此1或2秒的注意时间就更少了。

    那么,有没有一个简单的方法来进行所有的数据处理,并且仍然减少转换时间?

    提前谢谢

    更新: 我很肯定那会是更好的围裙。但是正确的知道时间是最重要的,我相信我知道瓶颈,对于如何解决或加速将数据解析为一个拥有近200个字段(大约50个来自表单,其余来自查询或代码)的XML,我一无所知。

    另一方面,2秒不仅来自数据解析,还来自开发服务器上的缓慢连接,以及西班牙的一般连接速度。我有80%的人相信它在生产服务器上不会那么慢,但是我不想冒这样的风险,认为没有什么可以加速。

    然后,查询外部Web服务的几分钟就不在我的控制范围之内了。它联系一个提供商的网络服务,该服务链接到几家汽车保险公司,获取数据并抛出一份保险价格清单?(对不起,不知道正确的单词)。由于这是浪费时间,我想我可以在这里隐藏这两秒钟的XML构造。

    唯一我不知道的是如何将表单值从表单发送到结果页面,该页面使用Ajax加载数据。

    3 回复  |  直到 16 年前
        1
  •  2
  •   David Robbins    16 年前

    我认为您需要关注为什么处理40个字段需要这么长时间。后端上的潜在瓶颈是什么?您在执行什么查询,需要这么长时间?如果您可以将处理时间减少到10秒以下,那么您就可以摆脱处理页面的工作,否则您需要一个不同的体系结构,如REST或NServiceBus来卸载长时间运行的执行,并以某种方式通知客户机您已经完成了。

        2
  •  2
  •   stwissel    16 年前

    您可以尝试在其他线程中进行处理。只需接受字符串、线程的旋转并返回结果。不幸的是,线程编程不符合“简单”的条件。btw现在通常被认为是低于3秒的。

        3
  •  0
  •   David Robbins    16 年前

    我重新阅读了您的问题,很抱歉没有考虑先问:您必须将表单解析回XML吗?是否可以将数据序列化到JSON,将其传递到服务器,反序列化并发出Web请求?JSON格式比XML“轻得多”,您可以使用库(如 JSON.Net . 这将消除一些处理开销。

    对于您调用的Web服务,每个请求上的数据是新的吗?有没有要求更少的数据或存储部分数据并定期刷新?可能您可以运行消息传递服务器(如msmq)并按计划刷新数据,然后仅在拥有用户特定数据后请求所需的内容。30秒就是30秒。

    我一直在想数据——你说你有200多个字段。我不清楚您是否需要执行查询或计算。如果您有许多记录,您是否考虑过一种不同类型的模式,它可能使您的检索更快?你能把静态查找拉到共享内存中,这样就不必点击磁盘了吗?

    推荐文章