小弟自设网站混口饭吃,由于财力不足,所以各方面都要做节省1U服务器HP DL360 1G,双CPU Xeon3.0G,70G硬盘,托管南北互通线路(100M共享)
我知道好的缓存架构会节省一定的流量浪费,并且能给用户更好的响应体验但是我个人对缓存没有实际的经验,完全找不到头绪,我先把自己的网站说明一下,然后请SP1234大哥和有经验的朋友指教,非常感谢!网站内容及应用的部分说明:
网站是关于小型数控机的网站,网站结构类似B2C,栏目分数控机纵览(图片,数据,报价,评论),行业新闻,论坛
商家多用户管理后台(管理商家产品相关),上网注册用户管理后(评论,论坛发贴,上传图片等)
网站管理员:(全站的管理)
网站商品信息更新和查询相对频繁我知道现在有什么浏览器缓存技术,Asp.net整页缓存,按参数缓存,自定义控件缓存,cache API,数据库缓存等技术,但是就迷糊如何有针对性的使用结合,都愁死我了,跪求sp1234大哥和各位朋友帮忙!

解决方案 »

  1.   

    在aspx頁面上加上
    <%@ OutputCache Duration="60" %>
    就可以了
      

  2.   

    缓存能在很大程度上决定ASP.NET应用的最终性能。Asp.net支持页面输出缓存和页面部分缓存,并提供Cache API,供应用程序缓存自己的数据。是否使用缓存可考虑下面的要点:
        1、识别创建与访问代价较大的数据
        2、评估需要缓存数据的易变性
        3、评估数据的使用频次
        4、 将要缓存数据中易变数据和不变数据分离,只缓存不变数据
        5、选择合适的缓存机制(除Asp.net Cache外,Application state和Session state也可以作为缓存使用)
      

  3.   

    首先,首页做缓存!这是必须的!
    有两种方式,
    一种是设置规定时间间隔内去数据库更新数据。不推荐,因为效率低!
    另外一种是推荐的,就是当数据库内容更新时,才通知首页去更新缓存!这要看你用那种数据库,当用ms sql 2000的时候,asp.net会对数据库进行轮换查询,看数据库有没有变换,
    以决定是否更新缓存!最小的轮换查询时间不能低于500ms!也就是0.5秒种!当用ms sql 2005的时候,采用的是事件通知,数据库变化会自动通知asp.net更新缓存,不变化就不管它,效率
    当然高!所以最好用ms sql 2005,不过你的内存实在是有点小,用2000吧!具体例子你可以看www.yy0371.com,我最近做的,就是利用缓存,你看打开首页速度怎么样!
      

  4.   

    给出实际代码:
    web.config
     <system.web>
          <caching>
            <outputCacheSettings>
              <outputCacheProfiles>
                <add name="times" 
                  enabled="true" 
                  duration="3600000" 
                  sqlDependency="需要缓存的数据库:需要轮换查询的表"/>
              </outputCacheProfiles>
            </outputCacheSettings>
            <outputCache enableOutputCache="true"/>
            <sqlCacheDependency enabled="true" pollTime="2000">
              <databases>
                <add name="数据库名字" connectionStringName="数据库连接字符串" />
              </databases>
            </sqlCacheDependency>
           </caching>
     </system.web>defult.aspx页面代码:<%@ OutputCache CacheProfile="times" VaryByParam="none" %>
      

  5.   

    对于经常变化的页面,推荐用上面的缓存对于不经常变化的页面,一句代码搞定,直接放在.aspx页面中!<%@ OutputCache Duration="可能多久不会变化的时间数,自己随意设置,单位秒比如Duration=3000000" VaryByParam="none" %>
      

  6.   

    减少相应延迟:因为请求从缓存服务器而不是源服务器被相应,这个过程耗时更少,让web服务器看上去相应更快; 
    减少网络带宽消耗:当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用,控制带宽的需求的增长并更易于管理。
    可使用微软分布式缓存服务Velocity
    http://www.cnblogs.com/Terrylee/archive/2008/12/07/Microsoft-Distributed-Cache-Velocity-Part3.html
    http://www.cnblogs.com/WCFGROUP/archive/2008/10/17/1313319.html
      

  7.   

    C#就那么几种缓存依赖, 你巴着手指头数数, 10个手指头都用不完. 你自己查查MSDN不是有了. 啥都等着人教.
      

  8.   

    我X,我把实际代码都给你了, 还白开水啊,asp.net的缓存无非就是页面缓存和sql数据库依赖缓存,代码都给你了,你还巴望我给你说些啥呢,
      

  9.   

    缓存只是相应时间的缩短,真正要达到用户体验的高效,还有其他的方面。
    1.图片大小:显示多大图片就应该是多大,别弄大了;
    2.图片分割:可能用的比较少了吧;
    3.html代码量:这个是最重要的,着重说一说。不管你是什么语言,什么架构,最终落实到用户页面上的,始终是html代码,于是,高质量的代码必不可少。减少html文件的大小可以极大的减少网络负荷。在html中,标签之间的文章中的空格是没有任何实际意义的,而且会占用极大的空间,消除这种无意义空格显得特别有意义,推荐一点方法。
        
        /// <summary>
        /// 压缩html代码
        /// </summary>
        /// <param name="writer"></param>
        protected override void Render(HtmlTextWriter writer)
        {
            System.IO.StringWriter html = new System.IO.StringWriter();
            HtmlTextWriter tw = new HtmlTextWriter(html);
            base.Render(tw);
            string outhtml = html.ToString();
            outhtml = System.Text.RegularExpressions.Regex.Replace(outhtml, "\\n+\\s+", string.Empty);
            outhtml = outhtml.Trim();
            writer.Write(outhtml);
        }
    这样出来的代码,完全居左对其,对比一下使用前后吧,是不是少了很多代码?这就是流量的节省。
    4.禁用不必要的viewstate:这个大家都知道,页面中看不懂的长串字符就是viewstate,这大概会占用15%~40%左右的html代码量,减少viewstate势在必行,如果当前页面没有使用任何viewstate,而且又不想一个控件一个控件的关闭它,可以使用以下代码
        protected override void Render(HtmlTextWriter writer)
        {
            System.IO.StringWriter html = new System.IO.StringWriter();
            HtmlTextWriter tw = new HtmlTextWriter(html);
            base.Render(tw);
            string outhtml = html.ToString();
            outhtml = System.Text.RegularExpressions.Regex.Replace(outhtml, "<input\\stype=\"hidden\"\\sname=\"__VIEWSTATE\"\\sid=\"__VIEWSTATE\" value=\".+\\/>", string.Empty);
            outhtml = outhtml.Trim();
            writer.Write(outhtml);
        }
    当然,这个是可以和上面的方法混合使用的,看自己的需求了。目前先想到这么多,如果想到其他的再说
      

  10.   

    除了缓存,在页面上应该少用表单和table!还有很多可以减少流量的办法,去网上搜搜吧...
      

  11.   

    我觉得在aspx.cs中压缩html文件并非明智之举,因为压缩需要时间的,何不直接先把html代码压缩好,免去在程序运行时压缩这个过程?大家觉得呢?
      

  12.   

    页面缓存太呆板了
    还要制定根据什么来跟新
    推荐使用Cache
    Cache在资源紧张时候自动释放
    并可以指定时间,也可以监听Cache的当前状态
    使用掐来灵活
    共享主机一般用的是程序池
    一个机器托很多用户,别人吃了资源你也会慢
    所以Cache很适合你