0

我在经典 ASP网站上工作。在一种形式中,将从 UPS 站点获取结果以显示运费,现在在第一次请求时从 UPS 站点获取结果时,通常需要几分钟的时间来回复。

因此,为了提高用户使用站点的体验,这个 UPS 运输计算应该在后台完成,当后台处理完成后,结果应该显示在表格中。

为了解决这个问题,我们使用了jQuery AJAX方法,但问题是用户必须在同一页面停留几分钟,直到 UPS 回复,如果他导航到其他页面,XHR 请求将被中止。

那么您能否建议,对于后台进程,必须在 Classic ASP 中选择哪种方式,或者如何在不中止 AJAX 请求的情况下导航到其他页面?

4

2 回答 2

1

对于像这样的慢后端进程,使用基于服务器端 sql 的队列系统几乎总是一个好主意。

具体来说,在您的服务器上,创建一个二进制/服务/脚本来读取队列表,从 UPS 获取数据并将结果写回队列表 - 随时维护状态 ID。

然后,您的站点需要做的就是将请求插入到队列表中,然后您可以使用 ajax 继续检查队列表以查看数据是否存在。

一个非常基本的例子(如果没有你给出例子很难说):

CREATE TABLE [dbo].[ParcelQueue](
    [JobID] [int] IDENTITY(1,1) NOT NULL,
    [RequestTime] [datetime] NULL,
    [ParcelTrackingNumber] [varchar](255) NULL,
    [StatusID] [smallint] NULL,
    [Result_DeliveryDate] [datetime] NULL,
 CONSTRAINT [PK_test] PRIMARY KEY CLUSTERED 
(
    [JobID] ASC
)WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
) ON [PRIMARY]

GO

ALTER TABLE [dbo].[test] ADD  CONSTRAINT [DF_test_RequestTime]  DEFAULT (getdate()) FOR [RequestTime]
GO

潜在状态 ID:

  1. 待办的
  2. UPS 响应正常
  3. UPS 响应失败
于 2012-07-23T11:46:33.007 回答
1

我只是创建了一个 ASP 页面,它将以异步方式将虚拟数据传递给 UPS 服务,然后创建了后台 windows 进程,它将定期调用该 ASP 页面。

这样,无论何时用户来到现场,他们都不会因为第一次 UPS 请求而导致响应缓慢,因为我们的后台进程已经保持 UPS 通道打开。

于 2012-09-04T19:13:56.680 回答