java推送消息到页面_java中如何把后台数据推送到页面上

最近刚好在写jQuery.ajax()的博文,这个函数能满足你的要求,即服务器数据变更时才进行回发数据并作更新,当然前提是客户端要发出请求,倘若你的请求是自动的那么可以使用javascript中的setInternal设置定时请求函数。对于ajax中你需要使用cache和ifModified函数,当然你不使用jQuery可以自己做封装。。。

另外Jquery.ajax()博文还在整理中,我将相关部分先给你看看  (你还可以baidu关键字Last-Modified / If-Modified-Since获取其他信息)

2)         ifModified参数:通过ifModified参数提高请求性能(即:“条件GET”:Last-Modified / If-Modified-Since和ETag / If-None-Match)

当你请求的资源并不是一层不变的时候,即不能简单的一直使用客户端缓存时,你可能通过将cache设置为false来发送请求,这实际上是在url加上时间戳组合成新的url去请求资源,这明显加大了服务器的压力。

对于这种情况,我们可以通过ifModified参数改进缓存方式,即仅在请求的数据改变时重新获取,这种改进方式请求的url不会改变,并且每次都会发送到服务器,只是会有检验方法验证是否需要重新获取数据从而节省带宽和开销。

过程如下:

a)      将$.ajax()函数的cache和ifModified参数同时设置为true。

b)      客户端请求服务端A,在服务端加上Last-Modified/ETag响应体一起返回。

c)      客户端缓存接收到的Last-Modified/ETag响应体,并在下一次发生请求A时将缓存的Last-Modified/ETag做为If-Modified-Since/IF-None-Match请求头一起发给服务器。

d)      服务器接收If-Modified-Since/IF-None-Match后,就检验自上次客服端请求之后资源是否有改动

i.       若还未改动则直接返回响应304和一个空的响应体。

ii.      若已改动则重新处理数据,返回最新的请求数据。

e)      保证不向客户端重复发出资源,也保证当服务器有变化时,客户端能够得到最新的资源。

这一过程中,我们只需要做:服务器返回Last-Modified/ETag响应头和检验数据是否失效并采取对应处理方式。其余步骤由jQuery框架的ajax()函数完成。

服务端关键代码:

if (!String.IsNullOrEmpty(context.Request.Headers["If-Modified-Since"])

|| !String.IsNullOrEmpty(context.Request.Headers["Etag"]))

{

if (CheckResourceValidate())  // 检查资源有效性

{

// 如果资源有效,则直接返回304状态码,客户端回去到此状态码后会从缓存中取值。

context.Response.StatusCode = 304;

return;

}

}

// 请求数据

GetServerTimeAfter2Second();

context.Response.Cache.SetExpires(DateTime.Now.AddSeconds(5));

context.Response.Cache.SetLastModified(DateTime.Now);

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值