ASP.Net性能优化——页面数据缓存

S7-200 SMART PLC 数字量阀门控制功能块(FB)汇总 S7-200 SMART PLC功能块的各种写法可以查看专栏的其它文章,链接地址如下:S7-200 SMART PLC 子程序功能块(阀门控制)_RXXW_Dor的博客-优快云博客_plc控制阀门开关程序由于S7-200 SMARTPLC的子程序种种功能、容量限制,有时想实现多次调用的子程序可能并不是太容易,这篇博客还是给出一些推荐写法,供大家参看。 阅读详情
1 基本概念
        ASP.NET提供了一个相当出色的缓存引擎机制,它允许页面保存和索引HTTP请求所要求的各种各样的对象。ASP.NET的缓存对各个应用来说是私有的,是存储各种对象的存储器。缓存的生存周期取决于应用的生存周期,也就是说,当应用重新启动时,缓存实际上也已重建。
        缓存提供了一个简单的字典接口,以便于开发者能够轻而易举放置对象到缓存中,并在以后使用。最简单的情况下,放置一个对象到缓存中,就如同对字典增加一个条目。
例如:
1Cache(“myKey”)=MyValue
2即是把MyValue放入缓存中一个叫myKey的缓存对象中,当需要引用myKey值时,可以采用下面的使用方式:
3myValue1=Cache(“myKey”)
4if myValue1 <> Null then
5'非空时的动作
6…
7end if

 asp.net提供了三种缓存替换的策略:
(1)“腐烂搜索”(Scavenging)
        比较类似于“最近最少使用”替换原则,当内存变得比教紧张时,缓存机制会找出最不常用和最不重要的对象,把它从内存中移出,以减轻系统压力。为控制“腐烂搜索”的具体行为,编程者必须在插入缓存对象时,指明插入它的耗费和多少时间内它必须被存取一次才能继续留在缓存中,以供替换时进行决择。
(2)“到期控制”(Expiration)
        编程者可以指定缓存对象的生存周期,这种指定的时间可以是绝对的也可以是相对的。例如绝对的时间(下午6:00到期),相对时间(该对象距最近一次存取它的时间满10分钟即到期)。当一个缓存对象到期后,它将从缓冲内存中移出,此时对该对象的索引将得到null值,除非又重新插入该对象。
(3)“文件和键值依赖” 
        从外部文件或者是其他缓存键值是否改变,来决定本身键值是否有效。如果依赖发生改变,缓存对象将变得不可使用,并从缓存中移动出来。试想这样一种情况,应用从一个XML文件中读出金融信息,而该文件又被定期地修改。应用的作用是利用从该文件读出的信息构造一个图形对象以表示销售的情况。当应用读入文件时,它把数据插入缓存中,并记录下文件的依赖关系。当文件发生修改时,应用使开始产生的缓存对象无效并从内存中移出已经无用的数据,此后应用重新读入文件的数据,再把更新后的数据放入缓存,这样就完成了信息的更新,并返回给最终用户。

2 实例
例子:
        从一个XML中读出用户信息并显示在页面上,页面提供了两个按钮,一个为增加用户,一个为刷新。我们在内存中建立了一个缓存对象“DataCache5”,它与客户信息文件”custom1.xml”建立了依赖关系。当custom1.xml文件未发生变化时,我们按下“刷新”按钮,可以看到信息是从缓存中读出的;当我们输入客户相应的资料,增加了一个客户以后,再按下“刷新“按钮后,我们可以看到客户信息变成了从文件读出。
(1)ASPX源程序:
 1<html>
 2<head>
 3<title>
 4数据缓冲实验
 5</title>
 6</head>
 7<body>
 8<center>
 9<form runat=server>
10<h2>XML文件缓存测试</h2>
11<ASP:DataGrid id="DataGrid1" runat="server"
12        Width="600"
13        BorderColor="black"
14        ShowFooter="false" 
15        CellPadding=3 
16        CellSpacing="0"
17        Font-Name="Verdana"
18        Font-Size="8pt"
19             />
20<hr>
21<h3>添加一个客户信息</h3>
22<table>
23<tr>
24<td>姓    名:</td>
25<td><ASP:textbox id=txtName runat=server /></td>
26<td><ASP:RequiredFieldValidator ControlToValidate="txtName" Display="static" ErrorMessage="*" runat=server /> </td>
27</tr>
28<tr>
29<td>身份证号:</td>
30<td><ASP:textbox id=txtIdno runat=server /></td>
31<td><ASP:RequiredFieldValidator ControlToValidate="txtIdno"
32Display="static" ErrorMessage="*" runat=server /> </td>
33</tr>
34<tr>
35<td>信用卡号:</td>
36<td><ASP:textbox id=txtCard runat=server /></td>
37<td><ASP:RequiredFieldValidator ControlToValidate="txtCard"
38Display="static" ErrorMessage="*" runat=server /> </td>
39</tr>
40</table>
41<p>
42<asp:button text="增加" onclick="AddBtn_Click" runat=server />
43<asp:button text="刷新" onclick="RefreshBtn_Click" runat=server />
44<p><p><p>
45<asp:label id=lblMsg runat=server />
46</form>
47</center>
48</body>
49</html>


 1sub LoadData1
 2'当缓存对象DataCache5有效时,从缓存中读出客户信息;无效时,从文件读出信息
 3dim dv1 as DataView
 4    dv1=Cache("DataCache5")
 5    if dv1 = Nothing
 6    dim ds as DataSet
 7    dim fs as FileStream
 8    dim sr as StreamReader
 9
10    ds=New DataSet
11    fs=New FileStream(Server.MapPath("custom1.xml"),FileMode.Open,FileAccess.Read)
12    sr=New StreamReader(fs)
13    ds.ReadXml(sr)
14    fs.Close()
15    dv1=new DataView(ds.Tables(0))
16    Cache.Insert("DataCache5",dv1,New cachedependency(Server.MapPath("custom1.xml")))
17    lblMsg.text="数据从文件中读出"
18    Else
19    lblmsg.text="数据从缓存中读出"
20    end if
21'绑定到DataGrid1对象
22    DataGrid1.datasource = dv1
23    DataGrid1.databind()
24end sub

25sub Page_Load(s as object,e as eventargs)
26'加载页面时,从文件中读出客户信息
27    if Not IsPostBack
28    LoadData1()
29    end if
30end sub

31sub AddBtn_Click(s as object,e as eventargs)
32'增加一个客户信息到文件中
33dim FS as FileStream
34dim Reader as StreamReader
35dim DS as DataSet
36dim dr1 as DataRow
37dim tw1 as TextWriter
38    if Not Page.IsValid
39    lblMsg.text="还有域未曾填充"
40    else
41    DS=New DataSet()
42    FS=New FileStream(Server.mappath("custom1.xml"),FileMode.Open,FileAccess.Read,FileShare.ReadWrite)
43    Reader=New StreamReader(FS)
44    DS.readxml(Reader)
45        FS.Close()
46    dr1=DS.tables(0).newrow()
47        dr1("CustName")=txtName.text
48    dr1("CustIdno")=txtIdno.text
49    dr1("CustCard")=txtCard.text
50    DS.tables(0).rows.add(dr1)
51      
52        FS=New FileStream(Server.MapPath("custom1.xml"),FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite)
53    tw1=New StreamWriter(FS)
54    tw1=textwriter.synchronized(tw1)
55    DS.writexml(tw1)
56    tw1.close()
57    LoadData1()
58    end if
59end sub

60sub RefreshBtn_Click(s as object,e as eventargs)
61    LoadData1()
62end sub

63



(2)初始运行效果
         初始时,应用空间中无“DataCache”缓存对象,故文件从custom1.xml中读出客户信息,开始时为空,只显示了字段名。


(3)当添加一个用户信息后,文件custom1.xml发生改变,导致“DataCache5”对象无效,

LoadData1过程依然从文件custom1.xml中读取信息,并更新DataCache5对象。


(4)由于custom1.xml文件未曾发生改变,所以当按下“刷新“按钮后,信息却是从缓存对象DataCach5中读出来。


页面数据缓存技术可能比页面输出缓存技术使用得更普遍一些。

EndNote导入文献出现带有大括号{}乱码的解决办法 进入word中的Endnote工具栏——Bibliography Preferences(位于Bibliography区块的右下角),就是那个输入杂志名的小三角形,在Temporary citation delimiters处修改变量的默认符号。将默认的大括号{}修改为文章中不回使用到的符号。原因:因为Endnote插入的参考文献在Word中的代码就是以大括号隔开的,当文章中出现了该符号,endnote就会自动比对Library中的书目,而此时endnote出现错误。 阅读详情

相关推荐

深入解读ATPG Pattern类型:除了Basic Scan,Clock PO和RAM Sequential模式怎么用?

本文深入解析ATPG高级Pattern类型,包括Clock PO和RAM Sequential模式的应用策略。通过Mentor DFT工具链中的Tessent平台,详细介绍了这些模式的工作原理、配置命令及实战案例,帮助提升芯片测试的故障覆盖率和效率。特别适用于处理时钟域交叉和嵌入式存储器的复杂电路测试需求。

weixin_27697385的博客 486

Visual Basic 2010 数据库开发之超市管理系统08售货查询草稿

Imports System.Data.SqlClient Imports 超市管理系统.csglxtDataSetTableAdapters Public Class FrmShouHuoCX Private Sub FrmShouHuoCX_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load Dim shda As New shTableTableAdap...

复行数十步 222

从CLIP到AnomalyCLIP:零样本异常检测的跨领域进化之路

本文探讨了从CLIP到AnomalyCLIP的技术演进,重点介绍了零样本异常检测在跨领域应用中的突破。AnomalyCLIP通过对象无关提示学习和多尺度特征提取,显著提升了工业质检、医疗影像等领域的检测精度,实现了高达96.4%的金属螺母划痕检测精度和85.7%的皮肤癌敏感度。这一技术为多模态模型在异常检测中的应用开辟了新路径。

r2s3t4的博客 111

快速开发平台--自动生成类模块代码

 快速开发平台--自动生成类模块代码 来源:www.accessoft.com  点击数:1328  评论数:1 评论 | 收藏 | 复制 时 间:2013-12-17 20:22:36 作 者:Aaron   ID:20267  城市:闵行 摘 要:根据表的字段,自动生成对应的类模块。 正 文: 根据表的字段,自动生成对应的类模块。     使

ijustcalledtosay的专栏 834

MATPOWER的安装详细教程

MATPOWER的安装包实际为一个程序包,安装教程很简单,详见本文。

半个月亮Zz的博客 3万+

损失函数大汇总(五十三)(Boundary Loss附公式推导与代码)

摘要 Boundary Loss是一种针对图像分割任务的新型损失函数,特别适用于高度类别不平衡的细粒度分割场景。与传统的区域型损失(如Dice、交叉熵)不同,它通过计算预测边界与真实边界之间的距离来优化模型,更关注边界精度而非区域重叠。核心思想是利用距离图(distance map)将边界约束转化为区域积分形式,实现端到端训练。具体实现中,损失函数为预测概率与距离图的点积,梯度仅取决于距离图,具有明确的空间引导性。相比区域型损失,Boundary Loss能更好处理小目标、细长结构等边界敏感任务,可与Dic

悦学共鸣,温柔以待,汇聚光芒,共同成长 239

浅谈常见浏览器缓存方法(前端缓存)

浏览器缓存时浏览器保存数据用于快速读取或避免请求重复资源,提升网页加载速度. 前端缓存可分为两大类:http缓存和浏览器缓存 一.http缓存 http缓存指的是:当客户端向服务器请求资源时,会先抵达浏览器缓存,如果浏览器有"要求资源"的副本,就可以直接从浏览器缓存中提取,而不是从原始服务器中提取这个资源 常见的htttp缓存只能缓存get请求响应的资源,对于其他类型的响应则无能为力, http缓存都是从第二次请求开始的,第一次请求资源时,服务器返回资源,并在respone hearder头中回传资源的

Angel_Tears_的博客 7155

【深度学习驱动流体力学】采集OpenFOAM仿真数据作为AI模型训练数据集与卷积神经网络搭建到预测(一站式完整代码实现)

采集OpenFOAM仿真数据作为AI模型训练数据集与卷积神经网络搭建到预测(一站式完整代码实现)

源代码杀手的博客 1414

浏览器页面缓存 - Cache【性能篇】

如果【停用缓存】被勾选了,浏览器发送的请求中就会自带 Cache-Control:no-cache和Pragma:no-cache两个请求头。会强制要求缓存把请求提交给原始服务器进行验证 (协商缓存验证)。假如 Cache-Control 在请求头中不存在的话,Pragma:no-cache的行为与 Cache-Control: no-cache 一致。在Demo演示之前,切记将浏览器中的 【网络 -> 停用缓存】选项不要勾选。否则浏览器不会从本地缓存取数据。

问白的博客 2770

一文速学数模-K-means聚类算法实战:信用卡用户画像聚类分析

该项目算是非常经典的金融业务用户画像的基础分析了,主要根据用户信用卡使用行为数据进行分析,根据收集到的不同字段信息,对每个用户划分类别。这里需要说明一下的是,聚类模型只是将具有相似行为的大部分用户聚集到一个类别里面,这点并不会考虑到每个字段的含义,也就是分成的类别并不是用户价值等级,此类别仅仅是这个类别大体相同的信用卡用户行为对象,并不能给每个用户价值打上标签,那是评价模型做的事,这里要注意不要搞混淆了,用户价值评价是评价模型决定的,而画像是聚类模型分析的。

master_hunter的博客 1万+

一网打尽身份验证与授权:深入剖析ASP.NET Core Identity在C#中的全方位实战应用

ASP.NET Core Identity 是 Microsoft 提供的一个强大且可扩展的身份验证和授权框架,用于构建基于用户账户、角色和权限的Web应用程序。它提供了用户注册、登录、密码管理、多因素认证、角色分配、授权等功能,与ASP.NET Core框架深度集成,简化了安全相关的开发工作。通过上述代码示例和注释,展示了如何安装配置Identity、自定义用户实体与数据库上下文、实现用户注册登录、管理角色与用户角色关系,以及如何使用授权策略保护应用程序资源。,并指定用户和角色类型以及主键类型。

java专栏 1527

AI异构计算工程师笔试复盘:从CUDA到分布式训练核心考点解析

随着AI模型规模与计算需求爆发式增长,通用CPU已难以满足高性能计算要求,异构计算成为支撑深度学习训练与推理的关键技术。其核心原理是将计算任务合理分配至CPU与GPU等加速器,通过理解GPU存储层次、线程调度与访存模式,实现计算与数据搬运的高效重叠。CUDA编程模型为开发者提供了精细控制底层硬件的接口,结合合并访问、共享内存等优化手段,可显著提升kernel执行效率。在工程实践中,多卡训练还需关注All-Reduce等集合通信带来的开销,通过量化估算带宽与计算收益,定位系统瓶颈。这类系统级性能优化能力正是A

weixin_33910460的博客 351

手把手教你学simulink实例--基于Simulink的电动汽车动力总成控制策略验证与标定仿真平台

电动汽车的动力总成(Powertrain)是车辆的核心系统,包括动力电池、电机控制器、逆变器和驱动电机等关键部件。动力总成的控制策略直接影响车辆的动力性能、能耗效率和驾驶体验。为了验证和优化这些控制策略,基于MATLAB/Simulink的仿真平台成为一种高效且经济的解决方案。本项目旨在构建一个完整的基于Simulink的电动汽车动力总成控制策略验证与标定仿真平台,涵盖控制策略建模、性能评估以及参数标定等功能模块,并通过仿真验证系统的有效性。

MHD0815的博客 299

ASP.NET程序性能优化的七个方面

 一、数据库操作1、用完马上关闭数据库连接   访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。   连接池的大小是有限的

孤夜寒心泪学习随笔 1374

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

锂电池充电器电路设计 里面有电路

锂电池充电器电路设计 里面有电路 3.7V升压到5V电路设计。

asp.net程序性能优化的七个方面(转)

 1、用完马上关闭数据库连接   访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。   连接池的大小是有限的,如果在连接池达到最大限度后仍要求

lovegod12的专栏 881

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

asp.net缓存

一、缓存概念,缓存的好处、类型。 缓存是一种用空间换取时间的技术,通俗点也就是说把你得到的数据存放在内存中一段时间,在这短时间内服务器不去读取数据库、或是真实的数据源,而是读取你存放在内存中的数据,这里你会疑惑怎么设置存放数据,能存放什么样子的数据,存放时间的设置,真实数据源数据改变服务器不就读取存在偏差?别急,下面慢慢会说到的。。 缓存的好处,缓存...

xiaoshengjinbu的博客 83

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

Asp.net程序性能优化的七个方面

一、数据库操作1、用完马上关闭数据库连接  访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。   连接池的大小是有限的,如果在

736

ASP.NET性能优化小结(ASP.NET&C#)

本文转载自:http://www.codesky.net/article/201202/164901.html ASP.NET: 一、返回多个数据集   检查你的访问数据库的代码,看是否存在着要返回多次的请求。每次往返降低了你的应用程序的每秒能够响应请求的次数。通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的系统具有扩展性,也可以减少数据库服务器响应请求的工作量。

426

【转】asp.net性能的技巧

1. 数据库访问性能优化   数据库的连接和关闭   访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。   连接池的大小是有限...

weixin_30414155的博客 149

ASP.NET设计中的性能优化问题 (转)

关于数据处理相关的优化 一、 SqlDataRead和Dataset的选择 Sqldataread优点:读取数据非常快。如果对返回的数据不需做大量处理的情况下,建议使用SqlDataReader,其性能要比datset好很多。缺点:直到数据读完才可close掉于数据库的连接 (SqlDataReader 读数据是快速向前的。SqlDataReader 类提供...

dhz43885的博客 206

asp.net的优化

ASP.NET: 一、返回多个数据集   检查你的访问数据库的代码,看是否存在着要返回多次的请求。每次往返降低了你的应用程序的每秒能够响应请求的次数。通过在单个数据库请求中返回多个结果集,可以减少与数据库通信的时间,使你的系统具有扩展性,也可以减少数据库服务器响应请求的工作量。   如果用动态的SQL语句来返回多个数据集,那用存储过程来替代动态的SQL语句会更好些。是否把业务逻辑写到存储过程

書畵 455

【转】asp.net程序性能优化的七个方面

【转自】http://hi.baidu.com/afawwb/blog/item/d3ef8688e5929097a5c2723e.html 一、数据库操作 1、用完马上关闭数据库连接   访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资 源。ASP.NET中提供了连接池(Connection Poo...

dishuangqing3232的博客 178

ASP.NET优化

一、数据库操作 1、用完马上关闭数据库连接   访问数据库资源需要创建连接、打开连接和关闭连接几个操作。这些过程需要多次与数据库交换信息以通过身份验证,比较耗费服务器资 源。ASP.NET中提供了连接池(Connection Pool)改善打开和关闭数据库对性能的影响。系统将用户的数据库连接放在连接池中,需要时取出,关闭时收回连接,等待下一次的连接请求。    连接池的大小是有限的,如

li_ser的专栏 1105
上一篇: ASP.Net性能优化——页面输出缓存
下一篇: ASP.NET Forum 学习笔记系列--Web.config
alys
博客等级 码龄23年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值