缓存ViewState减少网络传输
在维护 asp.net webform系统时,某些系统将控件及页面数据都存储在viewstate中,导致在频宽不够时,影响页面加载速度,此时可将viewstate 存储在服务端,减少网络传输。
重写 LoadPageStateFromPersistenceMedium SavePageStateToPersistenceMedium 即可,但是在实际使用中,如用户并发量太大不建议这样使用,会影响整个系统的运行状况,可有选择的选择某些重要的页面集成基类,处理viewstate 。
public class ViewStateCache
{
public string filename { set; get; }
public string Key { set; get; }
public string Value { set; get; } public static Queue<ViewStateCache> ViewStateQueue = new Queue<ViewStateCache>(); public static void RegisterViewStateQueue()
{
ThreadPool.QueueUserWorkItem(o =>
{
while (true)
{
try
{
if (ViewStateQueue.Count > 0)
{
ViewStateCache vcache = ViewStateQueue.Dequeue();
if (vcache != null)
{
File.WriteAllText(vcache.filename, vcache.Value);
}
}
else
{
Thread.Sleep(1000);
}
}
catch (Exception ex)
{
Log.Witer(ex.ToString());
}
}
});
}
} public class CachePageModel : System.Web.UI.Page
{
protected override object LoadPageStateFromPersistenceMedium()
{
if (LocalBaseInfoService.IsPriorityCacheViewState())
{
string viewStateID = (string)((Pair)base.LoadPageStateFromPersistenceMedium()).Second; var stateObject = Cache[viewStateID];
if (stateObject != null)
{
RedisHelper.Hash_SetExpire(viewStateID, DateTime.Now.AddSeconds(5));
Cache.Remove(viewStateID);
return stateObject;
} string stateStr = ""; string fn = Path.Combine(this.Request.PhysicalApplicationPath, @"App_Data/ViewState/" + viewStateID);
stateStr = File.ReadAllText(fn); if (!string.IsNullOrEmpty(stateStr))
{
return new ObjectStateFormatter().Deserialize(stateStr);
}
else
{
return base.LoadPageStateFromPersistenceMedium();
} }
else
{
return base.LoadPageStateFromPersistenceMedium();
}
} protected override void SavePageStateToPersistenceMedium(object state)
{
if (LocalBaseInfoService.IsPriorityCacheViewState())
{
string viewStateID = "viewstate" + Request.Url.AbsolutePath.ToString().Replace("\\", "-").Replace("/", "-") + Guid.NewGuid().ToString(); Cache.Insert(viewStateID, state);
string value = new ObjectStateFormatter().Serialize(state); string fn = Path.Combine(this.Request.PhysicalApplicationPath, @"App_Data/ViewState/" + viewStateID); ViewStateCache.ViewStateQueue.Enqueue(new ViewStateCache() { Key = viewStateID, Value = value, filename = fn }); base.SavePageStateToPersistenceMedium(viewStateID); }
else
{
base.SavePageStateToPersistenceMedium(state);
}
}
}
缓存ViewState减少网络传输的更多相关文章
- 洛谷 P2558 [AHOI2002]网络传输
P2558 [AHOI2002]网络传输 题目描述 在计算机网络中所有数据都是以二进制形式来传输的. 但是在进行较大数据的传输时,直接使用该数的二进制形式加以传输则往往传输的位数过多. 譬如要传输 1 ...
- [转载]详解网络传输中的三张表,MAC地址表、ARP缓存表以及路由表
[转载]详解网络传输中的三张表,MAC地址表.ARP缓存表以及路由表 虽然学过了计算机网络,但是这部分还是有点乱.正好在网上看到了一篇文章,讲的很透彻,转载过来康康. 本文出自 "邓奇的Bl ...
- 从网卡发送数据再谈TCP/IP协议—网络传输速度计算-网卡构造
在<在深谈TCP/IP三步握手&四步挥手原理及衍生问题—长文解剖IP>里面提到 单个TCP包每次打包1448字节的数据进行发送(以太网Ethernet最大的数据帧是1518字节,以 ...
- PHP-02.文件上传、php保存/转移上传的文件、常见的网络传输协议、请求报文及属性、响应报文及属性
关系数组 array("key"=>"value",...) ; get没有数据大小的限制 post上传大小没有限制 不指定上传方式,默认是get 文件上 ...
- web性能优化-网络传输性能优化
浏览器工作原理:https://www.cnblogs.com/thonrt/p/10008220.html 浏览器渲染原理: https://www.cnblogs.com/thonrt/p/100 ...
- Android IOS WebRTC 音视频开发总结(五七)-- 网络传输上的一种QoS方案
本文主要介绍一种QoS的解决方案,文章来自博客园RTC.Blacker,欢迎关注微信公众号blacker,更多详见www.rtc.help QoS出现的背景: 而当网络发生拥塞的时候,所有的数据流都有 ...
- udp 视频包网络传输花屏
视频数据传输在传输层可以选择TCP或者UDP,TCP面向连接,传输中断,发送端是知道的.TCP传输的好处是不丢包,坏处是网络不太好的情况下会越堵越严重.UDP非面向连接,发送端只管发送数据,接收端有没 ...
- App安全之网络传输安全
移动端App安全如果按CS结构来划分的话,主要涉及客户端本身数据安全,Client到Server网络传输的安全,客户端本身安全又包括代码安全和数据存储安全.所以当我们谈论App安全问题的时候一般来说在 ...
- 解决TCP网络传输“粘包”问题
当前在网络传输应用中,广泛采用的是TCP/IP通信协议及其标准的socket应用开发编程接口(API).TCP/IP传输层有两个并列的协议:TCP和UDP.其中TCP(transport contro ...
随机推荐
- js加密(三)企名片
1. url: https://www.qimingpian.cn/finosda/project/pinvestment 2. target: 3. 简单分析 3.1 打开调试窗口,刷新页面,看看都 ...
- 修改vsftpd的默认根目录/var/ftp/pub到其他目录
修改ftp的根目录只要修改/etc/vsftpd/vsftpd.conf文件即可: 加入如下几行: local_root=/var/www/html chroot_local_user=YES ano ...
- stl队列
队列(Queue)也是一种运算受限的线性表,它的运算限制与栈不同,是两头都有限制,插入只能在表的一端进行(只进不出),而删除只能在表的另一端进行(只出不进),允许删除的一端称为队尾(rear),允许插 ...
- Spring bean继承
Bean 定义继承 bean 定义可以包含很多的配置信息,包括构造函数的参数,属性值,容器的具体信息例如初始化方法,静态工厂方法名,等等. 子 bean 的定义继承父定义的配置数据.子定义可以根据需要 ...
- 每天进步一点点------Altium Designer PCB设计规则中英对照
Electrical(电气规则) Clearance:安全间距规则 Short Circuit:短路规则 UnRouted Net:未布线网络规则 UnConnected Pin:未连线引脚规则 Ro ...
- jquer_shijian 增加初始化 年月日 及 结束时间 年月日
增加了插件 在初始化的时候,控制 年月日,和结束 年月日 $(time_createobj).siblings(".xtw_budget_userdatafn_hide").shi ...
- iOS-image图片旋转方向
https://blog.csdn.net/qq_36557133/article/details/85760469 最近在做项目的时候发现资源包内的图片的方向不对,但也不想让UI切一个新图,所以需要 ...
- 试题编号: 201903-3 试题名称: 损坏的RAID5
这题的数据未免也太水了,题目的意思好像默认是每块磁盘装载数据的长度是相等的.我写了判断每次取数据是否会超过每块磁盘存的数据的长度,然而并没有什么卵用.交上去20分,写了个数据测了下,如果要求的块太大的 ...
- vue中使用vue-i18n 一个简单的国际化操作
1.安装:npm install vue-i18n --save-dev 2.在main.js文件中引入: import VueI18n from 'vue-i18n' Vue.use(VueI18n ...
- 存储引擎,MySQL中的数据类型及约束
存储引擎,MySQL中的数据类型及约束 一.存储引擎 1.不同的数据应该有不同的处理机制 2.mysql存储引擎 Innodb:默认的存储引擎,查询速度叫myisam慢,但是更安全 支持事务, ...