小弟自设网站混口饭吃,由于财力不足,所以各方面都要做节省1U服务器HP DL360 1G,双CPU Xeon3.0G,70G硬盘,托管南北互通线路(100M共享)
我知道好的缓存架构会节省一定的流量浪费,并且能给用户更好的响应体验但是我个人对缓存没有实际的经验,完全找不到头绪,我先把自己的网站说明一下,然后请SP1234大哥和有经验的朋友指教,非常感谢!网站内容及应用的部分说明:
网站是关于小型数控机的网站,网站结构类似B2C,栏目分数控机纵览(图片,数据,报价,评论),行业新闻,论坛
商家多用户管理后台(管理商家产品相关),上网注册用户管理后(评论,论坛发贴,上传图片等)
网站管理员:(全站的管理)
网站商品信息更新和查询相对频繁我知道现在有什么浏览器缓存技术,Asp.net整页缓存,按参数缓存,自定义控件缓存,cache API,数据库缓存等技术,但是就迷糊如何有针对性的使用结合,都愁死我了,跪求sp1234大哥和各位朋友帮忙!
我知道好的缓存架构会节省一定的流量浪费,并且能给用户更好的响应体验但是我个人对缓存没有实际的经验,完全找不到头绪,我先把自己的网站说明一下,然后请SP1234大哥和有经验的朋友指教,非常感谢!网站内容及应用的部分说明:
网站是关于小型数控机的网站,网站结构类似B2C,栏目分数控机纵览(图片,数据,报价,评论),行业新闻,论坛
商家多用户管理后台(管理商家产品相关),上网注册用户管理后(评论,论坛发贴,上传图片等)
网站管理员:(全站的管理)
网站商品信息更新和查询相对频繁我知道现在有什么浏览器缓存技术,Asp.net整页缓存,按参数缓存,自定义控件缓存,cache API,数据库缓存等技术,但是就迷糊如何有针对性的使用结合,都愁死我了,跪求sp1234大哥和各位朋友帮忙!
<%@ OutputCache Duration="60" %>
就可以了
1、识别创建与访问代价较大的数据
2、评估需要缓存数据的易变性
3、评估数据的使用频次
4、 将要缓存数据中易变数据和不变数据分离,只缓存不变数据
5、选择合适的缓存机制(除Asp.net Cache外,Application state和Session state也可以作为缓存使用)
有两种方式,
一种是设置规定时间间隔内去数据库更新数据。不推荐,因为效率低!
另外一种是推荐的,就是当数据库内容更新时,才通知首页去更新缓存!这要看你用那种数据库,当用ms sql 2000的时候,asp.net会对数据库进行轮换查询,看数据库有没有变换,
以决定是否更新缓存!最小的轮换查询时间不能低于500ms!也就是0.5秒种!当用ms sql 2005的时候,采用的是事件通知,数据库变化会自动通知asp.net更新缓存,不变化就不管它,效率
当然高!所以最好用ms sql 2005,不过你的内存实在是有点小,用2000吧!具体例子你可以看www.yy0371.com,我最近做的,就是利用缓存,你看打开首页速度怎么样!
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" %>
减少网络带宽消耗:当副本被重用时会减低客户端的带宽消耗;客户可以节省带宽费用,控制带宽的需求的增长并更易于管理。
可使用微软分布式缓存服务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
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);
}
当然,这个是可以和上面的方法混合使用的,看自己的需求了。目前先想到这么多,如果想到其他的再说
还要制定根据什么来跟新
推荐使用Cache
Cache在资源紧张时候自动释放
并可以指定时间,也可以监听Cache的当前状态
使用掐来灵活
共享主机一般用的是程序池
一个机器托很多用户,别人吃了资源你也会慢
所以Cache很适合你