技巧:使用会话状态避免不必要的 Ajax 通信量

本文探讨了在Web应用程序中结合使用REST和Ajax的技术,并介绍了一种利用会话cookie来减少客户端-服务器通信量的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在可行的情况下,以 REST 的方式创建 Web 应用程序 —— 包括基于 Ajax 的应用程序 —— 将避免大量 bug。然而,具象状态传输(Representational State Transfer,REST)的一个缺陷就是使用类似的 XMLHttpRequests 发送复制数据。本技巧将展示如何通过适度使用会话 cookie 将服务器端状态维持至最低水平,从而显著减少客户机-服务器通信量,同时仍然允许不使用 cookie 的操作。

引言

HTTP 是一种无状态协议,这个简单事实既是它的优点也是它的缺点。它意味着发往 HTTP 服务器资源的每个请求都是等幂 的,这就是说相同的请求在每次调用时应返回相同的结果。等幂是 REST 的基本思想:无论何时发起,相同的请求 — 可能是客户机信息的编码 — 应该返回相同的数据。

理论上讲,Ajax 应用程序通常比 REST 具有更加丰富的状态。Web 应用程序中的某个字段或区域将反映某些服务器数据的当前状态,同时客户机通过 JavaScript 轮询定期查询当前状态(可以使用多种方法使它更加倾向于推的方式,但是对本技巧来说并无必要)。然而,Web 应用程序多少都期望服务器能够跟踪在下次轮询事件需要了解的内容:客户机得到了哪些数据、没有得到哪些数据、已经进行了哪些交互,等等。

对 Ajax 应用程序使用 REST 技术的一个常见方法是为所有针对最新数据的查询安排一个全局惟一的 URI。例如,某个查询可能包含一个 UUID,使用 URL 编码的参数或隐藏的表单变量;比方说,一个 XMLHttpRequest 对象可能会对如下资源执行 GET 操作:

http://myserver.example.com?uuid=4b879324-8ec0-4120-bba6-890eb0aa3fc0

在下一次轮询事件中,即使只过了一秒的时间,也会打开一个不同的 URI。  

本文转自:IBM developerWorks 中国

请点击此处查看全文

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值