asp.net 2.0中的缓存提供了对sql依赖项的支持,也就是说当sql server数据库中的表或行中的数据被更改后,缓存中的页面就失效,否则,页面输出可一直保留在缓存当中。这确实为程序员提供了方便。但微软一向很小家子气,只为使用自家产品sql server的程序员提供了方便,那些用oracle数据库的asp.net程序员怎么办呢?
1、打开visual studio 2005,在e:/csharp/cachebyoracledependncy目录下新建一个web项目,在其default.aspx页面上添加一个label控件,显示页面生成的时间,以判断刷新时页面是否为重新生成的,并设置页面缓存依赖于文件e:/csharp/cachebyoracledependncy/textfile.txt。
create or replace trigger "scott"."test_cache_by_oracle_dependncy" after insert or update or delete of "deptno", "dname", "loc" on "scott"."dept" declare file_handle utl_file.file_type; begin --打开文件 file_handle := utl_file.fopen('filepath','textfile.txt','w'); --将当前系统时间写入文件 if utl_file.is_open(file_handle) then utl_file.put_line(file_handle,to_char(sysdate,'yyyy-mm-dd hh24:mi:ss')); end if; --关闭文件 utl_file.fclose(file_handle); exception when others then begin if utl_file.is_open(file_handle) then utl_file.fclose(file_handle); end if; exception when others then null; end; end;
在visual studio 2005中调试程序,不断刷新打开的default.aspx页面,页面显示的时间每隔120秒,才会发生变化一次。这是因为设置的缓存过期时间为120秒。这时,只要我们手工修改scott用户的dept表中的数据后,再次刷新页面时,页面上显示的时间马上就会发生变化。这说明我们设置的依赖oracle的缓存策略成功了。