为了账号安全,请及时绑定邮箱和手机立即绑定

网站静态化问题

网站静态化问题

墨色风雨 2019-04-09 20:23:49
为了达到高性能web的访问的效果,最有效的方法就是网站的静态化了,生成html访问。比如,做一个cms,有一些地方大家是怎么解决的呀?+分类列表页生成机制?是后台定成生成,还是有新文章的时候,就生成分类列表页?还是不生成?+文章页面文章页面,有几个动态的问题,比如,阅读次数,评论,对于这些静态中常变的部分,采用什么机制呢?
查看完整描述

2 回答

?
小怪兽爱吃肉

TA贡献1852条经验 获得超1个赞

我个人认为,网站静态化,并不一定非要靠写代码实现整站HTML的生成,有些工具能提供非常好的缓存机制。在Web开发中,最关键的瓶颈往往在于数据库,减少数据库的读写压力,就是缓存的主要作用。
在可以提供缓存功能的工具中,应用层的可以用Memcache和Redis,前端缓存可以用Varnish和Nginx的提供的缓存功能,当然还要合理利用304状态码。
以Memcache和Redis为例,它们的作用是让你能够把数据库的数据保存在内存或者是磁盘文件上,这样每次请求过来你仍然可以通过程序来控制业务逻辑,但是极大地减少了数据库的访问,性能自然提升。
而对于Varnish和Nginx这样具有反向代理功能的工具来说,它们的作用就是将第一次动态请求的页面缓存起来,在过期时间内,接下来的请求返回的都是缓存里的数据,不再向后端服务器发起请求。
而对于你后面的问题,阅读次数,评论这些静态中常变的部分,使用不同工具的情况下也有不同的解决方法。
文章的阅读次数——使用应用层缓存的情况下,可以先把阅读次数写入到缓存中,在后台写个脚本定期从缓存中读出来写入到数据库里。使用前端缓存的情况,可以用Ajax异步调用把阅读次数写入到数据库中,如果写压力大的话,就像使用应用层缓存一样,先写入缓存,再写脚本定期读。
评论——同学你知道有两个东西叫Disqus和多问吗?如果你要手动管理评论的话,使用应用层缓存的情况下,就像平常一样读写即可,只需要做好缓存管理;如果用前端缓存的话,以Varnish为例,读的时候可以用ESITag这个特性,就像Apache的SSI一样,写评论的话,还是要用Ajax来异步写入,当然,你得在Varnish里设置不缓存POST提交。
欢迎深入讨论。
                            
查看完整回答
反对 回复 2019-04-09
?
翻翻过去那场雪

TA贡献2065条经验 获得超14个赞

1,手动生成,比如织梦cms
2,配置缓存文件过期时间,用户访问页面时,判断缓存文件是否过期,如果没有过期,直接读取缓存文件,如果过期,就执行PHP代码重新读取数据库的数据生成缓存文件
                            
查看完整回答
反对 回复 2019-04-09
  • 2 回答
  • 0 关注
  • 312 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信