• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号
您的位置:首页 > 程序设计 >ASP.NET > Asp.Net 网站性能优化之缓字决 (上) 缓冲写数据

Asp.Net 网站性能优化之缓字决 (上) 缓冲写数据

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了用asp.net开发网站,iis配置asp.net网站,iis发布asp.net网站,用asp.net做的网站,iis部署asp.net网站等相关知识,希望对您有所帮助,也希望大家支持linkedu.com www.linkedu.com
大家已经看到很多关于Asp.Net缓存的文章了。所以我写的时候要改变一下思路,从缓冲写数据开始说起。缓冲写数据的意思是在数据需要更新时不马上把数据存到数据库,而是先缓冲一下,然后在适当的时机再写入到数据库中。

缓冲写数据可以避免在网站并发访问多的时候,数据库瞬间承受过大压力,而造成死锁或响应不及时的情况。

那么什么时候适合缓冲写呢?是不是所有情况都适用呢?缓冲写会导致数据在内存中或者web server硬盘或者第三方存储中驻留一段时间,在这段时间内如果从数据库中查询最新数据的话,会有遗漏。大多数事物都有两面性,我们需要学会趋利避害;换句话说在保证缓冲写不会导致用户感觉数据缺少的情况下,或者在使用适当措施不让用户感觉数据缺失的情况下就可以使用缓冲写。我有两个具体的实例来介绍如何使用缓冲写:

1. Pv(页面浏览量)统计,大多数网站都有这个功能,有些网站还专门做这个服务
  网站每有一个页面被浏览时,就会需要给对应页面的Pv+1;这种情况下,如果直接更新到数据库中,访问量稍微大一些就会造成数据库压力过大的问题。

  所以我们需要对Pv计数做缓冲,在单web server的情况下我们可以在内存中维护一个hashtable,然后用一个异步的线程去定时扫描这个hashtable,当点击数达到“一定数字”时更新到数据库。听上去很简单,不过也需要一个小技巧,上一句话中说的“一定数字”四个字不能是随便的一个数字,如果它是4,试想一下会出现什么情况,我们的所有Pv数都会是4的倍数,用户会怀疑我们是不是在Pv上造假了;我们没有造假却留下了造假的迹象!这个“一定数字”必须是一个素数,我们可以取7,也可以用13,如果我们的访问量很大也可以取23或31;这样就不会出现“造假的迹象”了。

2. 发送站内短消息
  站内短消息也是一个比较通用的模块,他可以说是一种离线消息,并非im即时消息,所以我们可以利用这个业务特性,  来对发消息做下缓冲。当有短消息发送时我们可以先将这个短消息放到硬盘文件中,然后很快的响应用户,在ui上告诉用户,你的消息已经发出去了,然后我们可以用另一个线程(或者做一个windows服务)去监视缓冲短消息的目录顺序的将短消息存储到数据库中。

以上两个场景都是比较经典的利用缓冲写的例子,在现实中需要我们去具体分析业务和某个业务是否会造成数据库压力来决定是否缓冲写,如果业务本身对数据库的压力就很小,那当然就没必要考虑了,反之如果业务压力较大我们就需要做一些工作避免缓冲写的问题并利用缓冲写。

请尊重作者的劳动,转载请保留链接 玉开的技术博客 </div>
分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • ASP.NET网站第一次访问慢的解决方法
  • .net 应对网站访问压力的方案总结
  • asp.net微信开发(自定义会话管理)
  • ASP.NET网站聊天室的设计与实现(第3节)
  • ASP.NET网站模板的实现(第2节)
  • 记录asp.net网站是什么原因导致停止运行的代码
  • asp.net网站底部的版权信息实现代码且可维护
  • ASP.Net开发常见的一些问题总结
  • Asp.net 网站性能优化二则分享
  • asp.net小谈网站性能优化

相关文章

  • 2017-05-11asp.net Silverlight应用程序中获取载体aspx页面参数
  • 2017-05-11ASP.NET URL伪静态重写实现方法
  • 2017-05-11asp.net的加密解密技巧
  • 2018-08-20VS2015 IIS Express无法启动的解决方法
  • 2017-05-11.Net中的序列化和反序列化详解
  • 2017-05-11asp.net获取SQL所有数据库名、所有表名、所有字段名
  • 2017-05-11asp.net使用jQuery获取RadioButtonList成员选中内容和值示例
  • 2017-05-11DataTable类Clone方法与Copy方法的区别分析
  • 2018-08-20微信JS-SDK分享功能的.Net实现代码
  • 2017-05-11asp.net利用google的api做翻译

文章分类

  • JavaScript
  • ASP.NET
  • PHP
  • 正则表达式
  • AJAX
  • JSP
  • ASP
  • Flex
  • XML
  • 编程技巧
  • Android
  • swift
  • C#教程
  • vb
  • vb.net
  • C语言
  • Java
  • Delphi
  • 易语言
  • vc/mfc
  • 嵌入式开发
  • 游戏开发
  • ios
  • 编程问答
  • 汇编语言
  • 微信小程序
  • 数据结构
  • OpenGL
  • 架构设计
  • qt
  • 微信公众号

最近更新的内容

    • .net中实现listBox左右移动
    • 浅谈ASP.NET MVC 防止跨站请求伪造(CSRF)攻击的实现方法
    • ASP.net WebAPI 上传图片实例
    • 详解一款开源免费的.NET文档操作组件DocX(.NET组件介绍之一)
    • ASP.NET AJAX时用alert弹出对话框
    • C#反射实例学习及注意内容
    • Repeater绑定dictionary数据源代码及报错解决
    • Asp.Net获取网站截图的实例代码
    • ASP.NET简单好用功能齐全图片上传工具类(水印、缩略图、裁剪等)
    • asp.net下常用的加密算法MD5、SHA-1应用代码

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有