生成静态页后数据的更新问题

asdfgh_5982 2009-03-16 03:25:46
当然这个问题是老问题了。有很多解决方案,这里只是想叙述下自己的解决方案,希望大家提点意见。
1. 静态页面文件以半天12小时为更新单位。
2.在Global.asax的void Application_BeginRequest(object sender, EventArgs e)
中(提供伪代码:)

//1)获取请求的原始URL
string oldUrl = HttpContext.Current.Request.RawUrl;
//2)配备正则,是否符合网站的静态页模式
Regex(oldUrl)
//3)检查静态页文件是否存在
System.IO.File.Exists(your file path);
//4)存在文件,获取静态页文件的最后修改时间
DateTime iotime = System.IO.File.GetLastWriteTime(filePath);
//5)当前时间DateTime.Now与iotime 对比,之间相隔12小时,使用url重定向到处理页,进行重写用户请求的静态页然后返回。
if (!String.IsNullOrEmpty(url))
{
HttpContext.Current.RewritePath(url, false);
}
//6)处理页中使用文件流重写文件。


这样的好处是每次只针对一个静态页面,且自动更新该静态页,不必每次更新数据都要对所有的静态页文件进行更新。
除第一个用户要等待页面重写完成外,其他用户在12小时内都是直接访问该静态页面。

缺点是:1)对所有的用户请求页都要进行正则匹配,用来检查是否是静态页面。
2)对第一个访问该页面的人的请求响应速度有影响(用户需等待页面被更新的过程)


上述方法在自己本地测试通过。但没有实际的平台测试有点可惜,不了解大弊端以及实际可行性。
...全文
244 15 打赏 收藏 转发到动态 举报
写回复
用AI写文章
15 条回复
切换为时间正序
请发表友善的回复…
发表回复
kke_007 2009-03-17
  • 打赏
  • 举报
回复
UP
ai2757 2009-03-17
  • 打赏
  • 举报
回复
这样如果是网站的话,每次添加数据或者修改后就生成数据不变化就不生成
migercai 2009-03-17
  • 打赏
  • 举报
回复
我曾经是这么做的:
在每个页面的数据有变动时(增、删、改)就重新生成一次
这样如果是网站的话,每次添加数据或者修改后就生成
数据不变化就不生成
浮生若梦丶 2009-03-17
  • 打赏
  • 举报
回复
看看先,以后用得到
yyixin 2009-03-17
  • 打赏
  • 举报
回复
路过
sagara9999 2009-03-16
  • 打赏
  • 举报
回复
回帖是一种美德!每天回帖即可获得 10 分可用分!
hx_huang 2009-03-16
  • 打赏
  • 举报
回复
回帖是一种美德!每天回帖即可获得 10 分可用分!
bulebirds 2009-03-16
  • 打赏
  • 举报
回复
不知道有用户登录信息的时候会不会有问题
mark620 2009-03-16
  • 打赏
  • 举报
回复
up
jwfeng520 2009-03-16
  • 打赏
  • 举报
回复
学习了 好帖 啊
闪亮的人生 2009-03-16
  • 打赏
  • 举报
回复
我也顶!
linloujun 2009-03-16
  • 打赏
  • 举报
回复
顶上去
jing87898797 2009-03-16
  • 打赏
  • 举报
回复
我顶
linaren 2009-03-16
  • 打赏
  • 举报
回复
其实可以不对每个页面进行重定位,
可以初步估计一下访问静态页面可客户端与非静态页面客户端的比例,
把比例大的访问加上try,catch段,如果异常才转向比例小的URL去,

当然这里面也有很多弊端的,仅供参考。

62,268

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧