大伙来讨论下全站静态化的方案!
我先分享下我以前的方案,思路是这样的在后台添加一条新闻时
使用SMARTY的fetch将内容放到变量里
用混杂码或者日期时间当文件名来创建这样一个静态页
在将它的URL地址存到数据库的记录URL的字段中
网页上的新闻地址就是该字段的静态页路径地址
比较占硬盘。。还有个坏处,用户必须开启该站点的
完全权限才可以创建文件夹。
tukiz06 大家是怎么做的呢?????? 该话题坚持两礼拜,势必讨论出
比较有特色很好的方案 tukiz07 tukiz07 tukiz07 tukiz07
大家都来讨论下,看看有什么比较实在,更有效的办法? :sweat: :sweat: 一般不用静态的...如果数据库查询太多,如首页,我就静态一部分...
减少一些数据库查询的时间:lol: [quote]原帖由 [i]17too[/i] 于 2008-11-13 17:03 发表 [url=http://bbs.phpchina.com/redirect.php?goto=findpost&pid=717721&ptid=90639][img]http://bbs.phpchina.com/images/common/back.gif[/img][/url]
:sweat: :sweat: 一般不用静态的...如果数据库查询太多,如首页,我就静态一部分...
减少一些数据库查询的时间:lol: [/quote]
一下看错了以为是部分缓存机制。。
静态一部分?? 如何实现的 ??tukiz14 请教一下。
回复 4# MeiWei 的帖子
:sweat:其实具体的弊处我也没有想过多,只是将首页不长修改的部分输出成静态页面,然后在引入的...
当时做的时候只是想减少数据库的读取时间,没有想过其他的坏处...感觉还是不错的
:victory: :victory: 哦,,,,是这样子。。。。
tukiz09 看见虫子在别处发了个 mod_rewrite 重写URL的方法
不过可惜了不可以在IIS里用,应该。。我明天实现下看看。 可以去参考下木冀下载,做得不错。 全静态不可能.比如blog就是每个文章静态.参照:[url]http://www.skiyo.cn/article/Skiyo-39-1223064054.html[/url] 全静态是可能的 只是没必要
对热点内容静态即可
另外一个问题是值得考虑的 如果修改页面的某一个细节 那在数据量比较大的情况下
要刷新N多静态文件 是消耗时间的
可以把关键数据写入静态文件 再赋给模板完成输出
可惜开销还是增加了不少 不过总比去查数据库速度快 能缓解批量修改细节带来的困扰
还有 可以考虑 使用 shtml 把预期可能修改的文件 include进去
回复 11# yz20sui 的帖子
tukiz46 呵呵,没有试过shtml 等一下看看 我也没去试shtml 全站静态化:一,内容页模板的制作:
1,采用DIV+CSS,这样的模板体积较小,可有效节省存储空间,而且替换CSS可以在一定程度上改变页面风格,不需要频繁重新生成所有静态页。
2,评论,留言,广告,相关内容链接等需要频繁更新的内容使用JS或FRAME加载。
二,缓存的生成:
1,对于内容页来说,只有在添加修改内容的时候生成静态缓存。
2,列表页链接直接指向该标题对应的内容的静态链接,内容缓存页名称最好采用有一定规律性的名称,如内容添加时间与内容ID的组合,这样数据库中可不保存其内容缓存页地址。
3,对于使用采集的站点,采集完毕立刻全部生成缓存页会消耗大量的资源,不可取,可于数据库中增加一个字段,用来标记该页面是否已生成了静态缓存,若尚未生成,则显示列表时,显示动态链接,客户第一次点击该链接浏览内容时完成缓存的生成。
4,列表页的缓存需要设置过期时间,可根据你的内容更新速度灵活设置,并且可将列表页使用更高效的缓存方式,如memcache。
5,缓存存储路径应分级较深,保证每个目录下不至于文件过多影响性能,比较好的分级方式有/频道ID/栏目ID/年/月/日,如内容更新较快,可细致到小时等。
全站静态化的局限性:
1,空间的浪费:早期的、几乎没有访问量的内容与最新的、访问量很大的内容占用同等的存储空间,造成了空间的浪费。
2,更改模板较为困难:虽然可以通过更换CSS实现一定更换模板的目的,但局限性较大。
更优秀的方案:局部静态化。
局部静态化,只针对那些最新的,访问较为频繁的内容进行缓存,早期的,访问少的内容则不缓存,具体缓存策略需要根据站点性质进行灵活调整。 可以考虑下dede的 IIS也可以用用REWRITE
回复 13# MeiWei 的帖子
shtml也算是一种动态语言,不过功能有限! 如果更新不频繁,那就全静态。如果首页更新频繁,就没有必要了,把部分数据缓存一下就可以了。
文章中一些每次都要更新的数据就不能静态了,比如文章浏览次数,用js调用倒可以 全站静态也是可以的, 但要看情况, 有的东西不好全站静态.
全部静态的问题, 上面已经有说过, 特别是外观改变时, 不好弄, 但使用CSS有局限,
还有一个方法就是内容存放成XML静态文件, 再去加载XSL, 以前的CSDN论坛就是这样的.
还有一些部分内容动态的可以通过JS文件
当然这些一般只是用在CMS上的. smarty我感觉用起来并不方便
偶尔我还会用ob_*系列函数还方便些:biggrin: 新闻系统和blog全站静态化还可以,假如是论坛留言板静态化的话....那就可怕了! 根据应用来吧。如果是纯新闻那种,当然要静态才合适,如果是DZ论坛这种更新非常频繁,静态了倒增加负担了。
页:
[1]
2
