经典的ASP后台进程使用AJAX或其他方式



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

因此,为了改善用户对站点的体验,UPS的运费计算应该在后台进行,当后台处理完成时,应该显示结果以形成

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

所以,对于后台进程,你能建议在经典ASP中选择哪种方式,或者如何在不中止AJAX请求的情况下导航到其他页面吗?

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

具体来说,在您的服务器上,创建一个二进制/service/脚本来读取队列表,从UPS获取数据并将结果写回队列表-在执行过程中保持状态ID。

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

VERY基本示例(如果不举示例,很难说):

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响应失败

我只创建了一个ASP页面,该页面将以异步方式向UPS服务传递伪数据,然后创建了后台窗口进程,该进程将定期调用该ASP页面。

这样,每当用户来到现场时,他们就不会因为第一次UPS请求而出现响应缓慢的情况,因为我们的后台流程已经保持了UPS通道的畅通。

最新更新