有个客户的网站,要求所有产品在第一次打开页面时把所有产品分类及产品信息缓存到客户端,之后的所有操作都不进行数据库连接,都是使用缓存中的产品分类及产品信息。直到某些特定的界面才进行数据库操作。
如何才能实现这样的功能。

解决方案 »

  1.   

    有时候要学会说不。除非你决定使用WinForm。
      

  2.   

    这个“所有”有多大?一定要这样的话,就必须做成Ajax,然后数据先流到客户端,在客户端缓存起来。但是客户端硬件也有限制,“所有”是很大的话,浏览器占的内存也会过多。
      

  3.   

    一般都不这样做的,不过实在要做,也不是不可以,用 DateSet + ViewState 就可以了。
      

  4.   

    如果数据量大就不要考虑了,否则的话可以考虑使用Cache进行缓存,MS提供的企业库里的CacheManager还比较好用。
      

  5.   

    不用访问数据库的方法和多,楼主可能理解错了客户的需求,没有人会把数据缓存到客户端,客户端有很多,你如何保证缓存在各个客户端的缓存快照数据保持同步?现在应该还没有成熟的解决方法。
    根据我的理解,客户不希望每次都访问数据库,你可以采用服务器端Cache,Cache分为三种,一种应用程序缓存,一种是客户浏览器缓存,一种是预缓存,三种各自有自己的应用场合
    1) Application Cache是解决你的问题比较好的办法,你将数据库中不常变化,但经常被访问的数据缓存起来,这样针对B/S结构,客户访问的就是Cache中的数据,而且Memory中的操作非常快,比数据库或者I/O性能要提高不少。使用方法System.Web.Cache.Cache cache = HttpContext.RuntimeCache;
    2) 客户端Cache
    这种方式的Cache适合缓存你的UI。如果你有一个UserControl,他非常的通用,而且固定,这时候你可以将该控件或者页面用<%@Cache ..的方式,缓存到你的下游,下游可能是client pc,也可能是agent.同样达到了缓存的效果
    3)预缓存
    预缓存是将常用信息,如配置,常量等在Request_Strate的是时候,将常用信息放入HttpContext.Items中,此时就可以尽量避免变量的重复声明和初始化。
      

  6.   

    用户只是想要快些访问数据吧?这样的话缓存到Session中就可以了.
      

  7.   

    客户提出这样的要求,主要就是他们说,他们是在PDA上用个网站的,PDA的信号并不是很平稳。可能在走动时或主机那里的信号发射器受某种影响时甚至没有信号(可能在信号好的地方打开网站,再到某些信号不好的地方进行操作)。并且要求在PDA上打开产品等各种操作时速度要快要达到基本上像在本机运行一样。所以。。感觉很难做
      

  8.   

    按照你说的这样,你在pda中就要有个缓存策略。按照你的需求,pda内存和存储都有限,你要有针对性地缓存,而到底缓存那些你首先要有个策略。但是如你所说,客户如果想在离线后仍然操作数据的话,比较麻烦,ms出来一款本地数据库,适用于smart client,但是还是试用版本。
    你可以查看这文章
    http://www.microsoft.com/china/msdn/events/Webcasts/shared/Webcast/episode.ASPx?newsID=1242629
      

  9.   

    谢谢 greennetboy(我的老婆叫静静) 谢谢大家