日期:2014-05-18  浏览次数:20462 次

CSDN生成帖子功能是怎么做的?
请问这个功能是如何实现的。
比如打开一个帖子,由于缓冲,本来显示有3人回复,但是里面什么内容都没有,此时点击“管理菜单”中的生成帖子,结果回复都显示出来了。

------解决方案--------------------
刷新吗?
------解决方案--------------------
看看..
------解决方案--------------------
刷新的时候从缓存取,生成帖子的时候从数据库取?
我猜的
------解决方案--------------------
关注中....
------解决方案--------------------
这个问题很讨厌...

从看了这个贴子后我才知道原来可以这样做...我每次都是刷不出来就不看了.-_-!


------解决方案--------------------
mark
------解决方案--------------------
用页面缓存现实吗?这么多页面,那要什么样的服务器?
用缓存估计可能会和hibernate一样去设计,在生成帖子的时候flush()下。但是这样要缓存至少一个SQL语句。但是这样还是相当郁闷的,CSDN的帖子数量那是牛多的..
------解决方案--------------------
同样的疑问,我发帖子了,得到回复






====================
为了提高性能, 帖子页面有缓存. 所以你无法最实实的看到最新的内容. 

缓存时间是 3 分钟. 

帖子页面你 Ctrl + F5 是可以看到的。 

或者帖子URL中带一个参数。 


人多了,就不能用之前人少的策略来访问了。 否则大家都访问不了。
=========================



参见

http://topic.csdn.net/u/20080324/09/504c918d-49ba-4313-9ceb-1c2a940c49ec.html
------解决方案--------------------
csdn帖子是用xml保存的,结贴后转为静态页面:
1.如果直接操作xml的话,结贴即把xml文件设为只读的。
2.在数据库里保存xml格式,结贴后导出xml文件,数据库可以不保存改贴记录,即可以删除。
两种的话,如果用缓存,第一种是不可能的。第二种用缓存也相当耗性能的。
但结合两种很有可能的是:
发帖时insert数据库一条记录,并导出一份xml文件。
访问直接是.xml文件。
在提交恢复的时候,直接保存在数据库xml字段。
当生成帖子的时候就从数据库读取数据,操作xml文件,并显示给客服端
------解决方案--------------------
哪你就点一次生成帖子,程序,难免有点小问题!
------解决方案--------------------
看了http://topic.csdn.net/u/20080324/09/504c918d-49ba-4313-9ceb-1c2a940c49ec.html
不知道 蝈蝈俊.net 是不是代表csdn官方。。
如果是的话,我想我终于明白一些事情。。。。比如:CSDN为什么这么慢。。。
------解决方案--------------------
看似csdn想用ajax实现操作数据库和xml的想法,但是ajax并不是很稳定,所有出了生成帖子的功能。
//以上想法纯属个人见解,如有雷同实属巧合,如有错误实属正常。尽管拍砖谩骂.....
------解决方案--------------------
Mark~~
------解决方案--------------------
关注
------解决方案--------------------
mark
------解决方案--------------------
我想可能是个主被动触发生成的问题吧. 
如果一有人回复,系统自动生成的话,系统一直在生成. 比较费资源。
所以他可能定时生成. 
又为了要用户看到新贴子,所以提供了生成贴子功能,你点时再被动生成一次.
------解决方案--------------------
以上纯个人猜测。
------解决方案--------------------
第1次发现还有这个功能..... -_-!!
------解决方案--------------------
关注
------解决方案--------------------
高深啊。
------解决方案--------------------
我想应该是点击后,

又把这条记录相关的内容,从数据库中读取出来,重新生成一下整个的页面的.

------解决方案--------------------
mack
------解决方案--------------------
mark