如果在CMS中使用生成HTML内容页, 那么有个这样的问题, 如何使客户端不缓存上次的页面? 例如数据库更新后重新生成了HTML页面(页面名字没有发生改变), 而此前用户已经访问过这个页面, 如何使用户再次访问时得到的页面是最新的, 请教大家, 谢谢!
另外, 请大虾讲一下CSDN里生成静态帖子的大概原理(最好有缓存的讲解) 分不够再加
另外, 请大虾讲一下CSDN里生成静态帖子的大概原理(最好有缓存的讲解) 分不够再加
解决方案 »
- Session 问题 ,请高手指点
- 关于韩文,中文乱码问题!!
- 在ASP .Net 2005 中使用GridView 添加 HyperLink
- 在asp.net中用C#连接数据库
- 如果你认为这是一个问题,请回答!
- 请看那里的问题,为什么ListBox不能移动里面的内容?
- (一个民工的困惑)我用一个Button1虚拟激发file控件的浏览按钮,用一个web button2提交的时候,为什么要点击两次它才提交?
- 为什么我无法使用trim函数?
- 请教高手webdiyer(webdiyer),分页控件问题,请进!
- 类型转换
- DropDownList我绑定好两个字段,怎么提出第三个?
- 请问如何编写文件下载
我们常用的做法是发送一个“no-cache”的指令,但是实际使用过程中我们发现,这个指令对IE是有效的,但是对Firefox却没有效,这是因为,使用该指令Firefox不缓存HTTPS pages 但是还是会缓存HTTP pages ,这是Firefox的一个BUG,解决的办法很简单,就是使用no-store代替no-cache,同时发送no-store和no-cache指令 ASP.net中的处理方法,在不需要缓存的页面中添加如下代码 Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Cache.SetNoStore();
我也是今天看到的 另外, 请大虾讲一下CSDN里生成静态帖子的大概原理(最好有缓存的讲解) 其实会编写html以及会用string的replace方法就不成问题了,无非是自己先做一个模版一样的东西,自己在模版当中放一些奇怪的字符,可以叫做唯一字符,到时候传内容的时候替换掉即可
2.csdn应该没有真正静态化吧(估计,如果静态的化太吓人了,这么多内容,又要动态查询),只是url看起来像静态页面,称为“伪静态”,百度搜吧。
我觉得你可以做一个测试,看看客户端默认地是否在html更新时还缓存。除非浏览器做了特别的手动设置,实际上下载页面都会同时读取页面的最后修改时间爱你,所以一般来说,当你重新生成html的时候,浏览器一定会显示最新的html。
完全可以测试下,当你更改了服务器端的HTML页面,客户端访问时是当然时访问最新的!
楼主的意思时这样吧:如果数据库更新了数据,客户端访问时能够自动的从数据库获得数据并重新生成HTML页,然后返回给客户端最新生成的页面?
Accept: */*
Referer: http://forum.csdn.net/SList/ASPDotNET
Accept-Language: zh-cn
UA-CPU: x86
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.0; SLCC1; .NET CLR 2.0.50727; Media Center PC 5.0; .NET CLR 3.5.21022; InfoPath.2; .NET CLR 3.5.30729; .NET CLR 3.0.30618)
Connection: Keep-Alive
Host: topic.csdn.net
Pragma: no-cache
Cookie: __utma=260387464.378890235.1231344363.1235468182.1235904926.28; __utmz=260387464.1235904928.28.32.utmccn=(organic)|utmcsr=google|utmctr=.net+%E5%B0%86console%E8%BE%93%E5%87%BA%E8%BD%AC%E5%90%91|utmcmd=organic; WEA_u=39012013401117436; WEA_lu=http%3A//topic.csdn.net/u/20090301/16/115599c0-30d6-481e-bba1-41110079b897.html; WEA_lo=1235907657; WEA_savedata=pt:2897,rc:9,st:29773,lt:1235907657,ft:1232430011,ld:20090301; ASPSESSIONIDCSCTSBAB=EDDBHOGAGBLPJKCGNDGPPFHO; ASPSESSIONIDAQBRQDAA=GMGFEENAJDBMCNHMLLEOAIPL; cnt_uid_www=b133a20d8606c650de56a70dec0cb5e5; LastVisitedForum=3036657c-277c-476c-982d-75f154e09050*3931c03e-b66c-4189-a4f0-210fd9501803*8eb1f668-0e00-4a08-bf30-93ef948f04ee*4818cd61-5ea6-4167-8cbf-4ecf21faed1e*3036657c-277c-476c-982d-75f154e09050; __utma=17226283.578930363.1231234568.1235896239.1235905888.211; __utmz=17226283.1235905888.211.221.utmccn=(referral)|utmcsr=forum.csdn.net|utmcct=/BList/SE|utmcmd=referral; userid=982381; __gads=ID=8b1416bcd4ead61f:T=1232033761:S=ALNI_MZd3duCriIYrxo8qGsxWvCgZDy6UQ; IMMsgID_18d489181d25f2e38c7e943db24595e6=150; IMMsgID_d41d8cd98f00b204e9800998ecf8427e=148; ystat_bc_923704=3799466245416206467; ystat_bc_30117=10744635221343160798; ystat_bc_904243=1400145469210433129; _user_sid=5f103ca2547f7af6b8f11f36fe037f6f; __utmb=17226283; ABCDEF=igqhM95bqpbD2L%252fTl7u%252bFaia739kIfXDOTZXxl0J2hAiaqlV63OXCwy1038Ur93IjJ6gAsnjgPHeuB2nYOLKye4NVAYC3mWlu%252fcueKaayP6IGhSBZq3Rsa8YtLtSV86ZS2d8z7q35%252btCZbd%252fKEqWSnKZRZSEPNkuKsv7mi07OAXZa%252fj4hXDQUVGPWh%252fbF9yjlILrMWK%252fDDJ%252fudZ8tsAaNMhSBigPs2SceceCgXP47%252fgyLvcMFmC7WHgU0179FITB; QWERTOP=6321; UserName=sp1234; activeUserName=sp1234; PName=3e28f0690a397c03b2072958762113b80fb91e38592837212e9f8d; __utmc=17226283
得到的应答是:HTTP/1.0 200 OK
Date: Sun, 01 Mar 2009 11:40:47 GMT
Server: Microsoft-IIS/6.0
X-Powered-By: ASP.NET
Last-Modified: 2009-03-01 19:39:50
Content-Length: 71703
Content-Type: text/html
Expires: Sun, 01 Mar 2009 11:43:47 GMT
Cache-Control: Public
Age: 78
X-Cache: HIT from longrujun.name
X-Cache-Lookup: HIT from longrujun.name:80
Via: 1.0 cache1.longrujun.name:80 (longrujun)
Connection: close<!-- DefaultTemplate --><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="zh-CN" lang="zh-CN">
<head>
<meta name="designer" content="csdn design team" />
<meta content="all" name="robots" />
<meta http-equiv="Content-Language" content="zh-CN" />
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="/u/ui/styles/default/topic.css" /><link type="text/css" rel="Stylesheet" href="/u/ui/styles/mzform.css" />
<title>有关CMS的问题,向大家请教</title>
<meta csdnid="keywords" content="" name="Keywords" />
<meta id="topicViewUrl" csdnid="topicViewUrl" content="http://topic.csdn.net/u/20090301/16/115599c0-30d6-481e-bba1-41110079b897.html" />
<meta csdnid="sectionId" content="3036657c-277c-476c-982d-75f154e09050" />
<meta csdnid="description" content="有关CMS的问题,向大家请教" name="description" />
<script type="text/javascript" src="/u/ui/scripts/StaticTopicView.js"></script>
</head>
<body>
<a name="top"></a>
<div id="CSDNPHL">
<table class="CSDN-PHF" border="0" cellspacing="1" cellpadding="0"><tr>
<td><a rel="mz" href="http://www.csdn.net/">首页</a></td>
<td><a rel="mz" href="http://news.csdn.net/">新闻</a></td>
<td><a rel="mz" href="http://bbs.csdn.net/">论坛</a></td>
<td><a rel="mz" href='http://groups.csdn.net/'>群组</a></td>
<td><a rel="mz" href="http://blog.csdn.net/">Blog</a></td>
<td><a rel="mz" href="http://dev.csdn.net/">文档</a></td>
<td><a rel="mz" href="http://download.csdn.net/">下载</a></td>
<td><a rel="mz" href="http://book.csdn.net/">读书</a></td>
<td><a rel="mz" href="http://tag.csdn.net/">Tag</a></td>
.........
csdn现在是在服务器端得到html文本并返回给客户端的。
{
var sb = new StringBuilder();
var sw = new StringWriter(sb);
Server.Execute(page, sw);
File.WriteAllText(file, sb.ToString());
}然后,我们可以写一个专门显示贴子的aspx,例如是这样访问:“~/CMS/ShowContent.aspx?id=帖子id编号”。再然后,在我们的CMS系统中再设计一个aspx,例如是这样访问:“~/CMS/Reply.aspx?id=帖子id编号”。这个reply.aspx是签入ShowContent.aspx中的一个IFrame中的,就像当前这个帖子页面一样,在底部有一个Reply.aspx页面。把上面联系起来,我们可以在Reply.aspx中把提交内容保存到数据库之后立刻调用方法“保存网页到文件”把ShowContext.aspx输出的结果当时就保存成topic.csdn.net网站目录下的html文件。同时我们的“发贴”页面也可以在把数据保存到数据库之后立刻调用这个方法生成这个html。最后,在修改一下论坛帖子列表页面,当生成列表是链接不要绑定为ShowContent.aspx页面,而是生成为上面生成html文件的地址。
基本上这样一个原型就可以了。实际上,看看“保存网页到文件”方法,是不是特别简单。你会适当的时机调用它,就能制作这类功能了。
当然,其实我并不主张静态html页面。在2000年网络泡沫特别巨大的时候,涌现出来的许多以那个时代的网页编程技术开发的网站非常时兴转换为html的方式。这种方式的好处就是发布这些静态页面很简单,当你的服务器很差劲、系统维护总是不及时、网站无需大量的实时服务功能时,静态页面网站显得比动态页面网站更稳定得多。