风中灵药
我的眼泪划伤了夜,那么的脆弱...

添加一条记录后,如果要生成分类静态页的话,岂不要每一页都会重生成?如果有1000页的话,很恐怖啊!

----------------------------------------------------------------------

你真的是想搞静态,还是想给用户在url里一个友好的感觉,如果是后者用url转发

--------------------------------------------------------

是搞真的静态页

--------------------------------------------------------

你弄个1000页静态页有什么用? 
你应该先分析一下哪些页访问量巨大,处理数据时消耗厉害,才考虑对这些页生成静态页 
我怀疑你这1000页,真正访问量大的也就前几页,后面的连访问可能都没有!

还有再说了没有哪个人会一页一页看1000页的,你看看淘宝商品列表最多也就提供前100页

--------------------------------------------------------

是这样的,大部分的只是访问前面的内容。但有些情况,像下载站,下载列表,每个分类都有几十页,还有静态页的论坛,就算是生成前50页,也是很耗资源的

--------------------------------------------------------

这个问题一直都没有得到很好的解决! 
期待高人现身!

--------------------------------------------------------

如果生成XML,读取XML的速度应该会比读数据库快很多。我只是设想,估计实现起来不难。望高人不吝赐教。

--------------------------------------------------------

反向分页 
所谓反向分页就是把页码反转 
本来的数顺序页码为 1234567 
这样最旧的纪录是在最后页的, 
如果把他反回来7654321的话,最旧的纪录始终在第一页 
最新的就是页码最大的, 这样只要生成最大页码的数据就好了。

个人意见。具体没有实施过,你可以考虑一下

--------------------------------------------------------

无论什么办法,如果你要连分类也生成静态的话,只有每次更新都生成一次

因为涉及到最后一页的分页问题,不可能有很好的解决办法,除非,你每个页面上只用上一页和下一页来分页,否则就没办法

--------------------------------------------------------

按照楼上的方法生成的话,最大页有可能只有一条或二条记录,用户经常浏览的就是最大页,这样岂不是难看极了?

--------------------------------------------------------

大家看看http://www.discuz.net/的论坛,每个版块的主题列表都是静态的,不知道是怎么处理的...

--------------------------------------------------------

没人解决?

--------------------------------------------------------

discuz 不是有源代码么?拿来看看啊

--------------------------------------------------------

关注

--------------------------------------------------------

35526520现广纳贤才,是ASP.NET交流群,热烈欢迎各热爱C#学习的同志加入

--------------------------------------------------------

MARK

--------------------------------------------------------

关注

--------------------------------------------------------

这样太夸张了。。。。现在的服务器都对这种操作有限制的。。。。

--------------------------------------------------------

那些生成静态页的论坛是怎么做的呢?我找不到asp.net的论坛,discuz 的代码我看不懂

--------------------------------------------------------

也可以不用重新生成,只需要在每一个需要进行分页的静态页面获取进行分页时需要的重要数据即可,总数据行数,总页数,当前页数.

To:ldk(你的温柔其实如刀) 
Discuz 不是静态页面,他是伪静态URL,实际上跟.NET 里面的 UrlWriter 类似.实际上他是动态的.

To:cantops(翡翠梦境里的熊猫人) 
你的主意非常不错,我以前就是用这种思路来实现静态分页的,重要的数据是使用AJAX来获取的,不过在具体的测试过程中发现一些错误,后来就不使用纯静态分页了.需要解决的问题是页脚的问题,如1,2,3,4,5,6,7,8,9 页,我在实现的过程中是动态计算页脚的,所以显得稍微复杂一些.如果完全静态的写入HTML文本的话,可能不太好,因为有时我们可能会删除一些数据,这样分页就不准确了. 
我最近采用的方法是将每一页的数据存在TXT文件中,读取的时侯直接从TXT文件中读取,这样速度比从数据库中读取要快,由于XML文件的共享问题没有解决好,所以我没有采用XML文件来存储数据,TXT是最简单的,而且他的多线程共享问题解决的非常好.当然,以后可以根据情况再做修改.

--------------------------------------------------------

mark


--------------------------------------------------------

up

--------------------------------------------------------

自动生页的静态页与其所在的页数是一一对应的.你可以将需要分页的静态页面,再生成一个单独的目录页数据文件(直接写成javascript数组).或XML目录页.将URL,与页数进行一一对应.然后写javascript至页面即可.

另一个办法是.多页互有联系的静态页,就直接生成固定文件夹.将静态页文件名以非随机名字而是有序或一定规则生成.然后只要动态遍历此文件夹.html文件名即可解决.列如:/document/faq-1.html ....faq-120000.html


如果你认为导航在生成静态页时,直接生成会造成重新生成,那么,你可以采用以下办法: 
上一页 [...] 下一页

中间的[...]可用javascript生成导航.如此,可防止浏览器禁用javascript时,导航不存在的情况. 
而上一页,下一页直接生成文件名解析后减1加1即可.当超过最大最小值时,可自定义404错误页面即可.


不知道对你是否有帮助.

--------------------------------------------------------

个人感觉做新闻时比较适合用静态页,其他要看访问量

posted on 2012-02-23 22:04  风中灵药  阅读(633)  评论(0编辑  收藏  举报