免费手游平台下载网_回合制手游_仙侠修仙手游_战争养成手游下载基地

ASP 3.0高级编程(四十二)

ASP 3.0高级编程(四十三)

点击量:0来自:战争养成手游网

9.3.5 数据高速缓存        首先需要注意的是,数据高速缓存与记录集高速缓存虽然都用于改善性能,但两者是无关的。数据高速缓存是临时的数据存储区,允许使用高速缓存中的数据,而不是重新生成新的数据。这只适用于那些不经常改动但多次被访问的数据。        在ASP中一个最简单的缓存数据的方法是使用Application和Session范围的变量。例如,假设有一些需要选择书类型的网页。正常情况下,可能会创建一个含有以下函数的包含文件。 于是得到一份令人满意的出版社与书名的列表,如图9-10所示: 图9-10  整形后的书名列表 用一些DHTML代码和一些额外的标记,就能轻松地隐藏起书名,并且只有选择出版社时才显示相应的书名。 2.  多个子记录集 如果对于每个记录集仅能有一个子记录集,那么数据整形就不够完善。但数据整形是极其灵活的。例如可以使用下面的程序来为出版社引用标题和雇员。 SHAPE {select * from publishers} APPEND ({select * from titles} RELATE pub_id TO pub_id) AS rsTitles,       ({select * from employee} RELATE pub_id To pub_id) AS rsEmployees 只需在APPEND子句后加上其他子记录集,就能得到图9-11的结果: 图9-11  多个子记录集的结果 访问子记录集的方法并没有改变,仍旧可以用列的Value属性访问子记录集。只是此时有两个子记录集,因此需要使用两个变量。 Set rsTitles = rsPublishers("rsTitles").Value Set rsEmployees = rsPublishers("rsEmployees").Value 3.  孙代记录集 在子记录集自身还包含子记录集的情况下,可能会出现孙代记录集。例如: SHAPE {SELECT * FROM Publishers} APPEND ((    SHAPE {SELECT * FROM Titles}                      APPEND ({SELECT * FROM Sales}                      RELATE Title_ID TO Title_ID) AS rsSales) RELATE Pub_ID TO Pub_ID) AS rsTitles 在第一个APPEND子句内是另一个SHAPE命令,而不是一个SELECT语句。与多个子记录集的例子相似,访问孙代记录集的方法是相同的。 Set rsTitles = rsPublishers("rsTitles").Value Set rsSales = rsTitles("rsSales").Value 对子和孙记录集的深度没有理论上的限制,但也不可能建立多于三级或四级的子记录集。 9.4.2 性能 数据整形不会自动改善性能,但正确使用时可以改善性能。重要的是记住其工作方式: · 对于SHAPE命令中的SELECT语句,将完全取出表中的数据。SQL语句并没有得到任何优化。这样,如果在父表中加入WHERE子句来限制父记录集的记录数,仍能得到所有的子记录集。例如: SHAPE {SELECT * FROM Publishers WHERE State='CA'} APPEND ({SELECT * FROM Titles} RELATE Pub_ID TO Pub_ID) AS rsTitles APPEND语句返回所有的标题,并不仅限于加州(CA)的出版社。记住,这不是SQL JOIN语句。在加州的出版社以及所有的标题都被提取了,这样就完成了数据整形。 · 可以使用存储过程,这会提高一点性能。然而,如果使用一个参数化的存储过程产生子记录集,那么每次访问子记录集时,这个存储过程都会执行。这意味着,子记录集不在前端代码中编程产生,而是只包含存在存储过程产生的那么记录。不足之处是增加了服务器的工作,但这样却能保证数据是最新的,因为每次需要时就从数据库中提取数据。 在下一章当我们着眼于客户端数据时,会看到更多有关经过整形的记录集的介绍。 9.5 小结在下面两章以及本书的其余部分将看到相关的其他知识。在后续章节将详细探讨Web服务器与浏览器之间的交互。毕竟,仅有数据是不行的,还要让人们看见这些数据。

相关文集:ASP教程 windows
文章标题:《ASP 3.0高级编程(四十二)》
注明链接:https://www.labanchina.cn/article/tpart-30080.html