跪求sp1234大哥,网站缓存方案!
小弟自设网站混口饭吃,由于财力不足,所以各方面都要做节省
1U服务器HP DL360 1G,双CPU Xeon3.0G,70G硬盘,托管南北互通线路(100M共享)
我知道好的缓存架构会节省一定的流量浪费,并且能给用户更好的响应体验
但是我个人对缓存没有实际的经验,完全找不到头绪,我先把自己的网站说明一下,然后请SP1234大哥和有经验的朋友指教,非常感谢!
网站内容及应用的部分说明:
网站是关于小型数控机的网站,网站结构类似B2C,栏目分数控机纵览(图片,数据,报价,评论),行业新闻,论坛
商家多用户管理后台(管理商家产品相关),上网注册用户管理后(评论,论坛发贴,上传图片等)
网站管理员:(全站的管理)
网站商品信息更新和查询相对频繁
我知道现在有什么浏览器缓存技术,Asp.net整页缓存,按参数缓存,自定义控件缓存,cache API,数据库缓存等技术,但是就迷糊如何有针对性的使用结合,都愁死我了,跪求sp1234大哥和各位朋友帮忙!
[解决办法]
.
[解决办法]
在aspx頁面上加上
<%@ OutputCache Duration="60" %>
就可以了
[解决办法]
缓存能在很大程度上决定ASP.NET应用的最终性能。Asp.net支持页面输出缓存和页面部分缓存,并提供Cache API,供应用程序缓存自己的数据。是否使用缓存可考虑下面的要点:
1、识别创建与访问代价较大的数据
2、评估需要缓存数据的易变性
3、评估数据的使用频次
4、 将要缓存数据中易变数据和不变数据分离,只缓存不变数据
5、选择合适的缓存机制(除Asp.net Cache外,Application state和Session state也可以作为缓存使用)
[解决办法]
sp1234最近忙于工作,难有时间来啊
[解决办法]
首先,首页做缓存!这是必须的!
有两种方式,
一种是设置规定时间间隔内去数据库更新数据。不推荐,因为效率低!
另外一种是推荐的,就是当数据库内容更新时,才通知首页去更新缓存!
这要看你用那种数据库,当用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" %>
[解决办法]
对于经常变化的页面,推荐用上面的缓存
对于不经常变化的页面,一句代码搞定,直接放在.aspx页面中!
<%@ OutputCache Duration="可能多久不会变化的时间数,自己随意设置,单位秒比如Duration=3000000" VaryByParam="none" %>
[解决办法]
/// <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); }
[解决办法]
我以前也为这方面费了不少心,最后还是生成了静态页面....不过还看看sp1234怎么说吧.....
[解决办法]
呵呵,要达到减轻服务器压力办法很多 页面缓存只是一种解决办法。
应该考虑下:
编写代码时候,减少客户端与服务器交互的次数。
减少客户端和服务器段的交互代码量。
写存储过程的时候,逻辑上考虑下存储过程优化。
设计数据库的时候考虑规范和适用性,减少没必要的查询。
数据库多库的时候,要进可能减少库间的耦合。必要的时候尽量使用缓存来解决查询,比如根据用户ID 获取用户名
当然了,很多页面静态化也是不错的选择
......
[解决办法]
学习。。。学习。。。帮顶!~不知道问题解决了没。。