网站静态化的第一部分,百万帖子页面
来源:互联网 发布:淘宝宝贝可以增加sku 编辑:程序博客网 时间:2024/05/16 08:49
不知道因为什么原因,当系统的访问量达到了8000IP的时候,tomcat的内存总是会莫名其妙的增加到上限,而且到最后垃圾回收也会非常费力,最后导致系统停止响应,我调试过各种参数,包括垃圾回收策略,并行回收,修改各内存配置的参数,结果都一样,没办法,绝对对这一访问量最大的部分进行全部静态化。
一、静态化要考虑三个方面的事情,
1 对SEO
能够让搜索引擎更方便的进行信息采集和分类,提升其速度和准确性
2 对用户
不能影响版面的展示,不能为了速度影响了美观和可用性
3 对维护
一些内容可以方便的更换,比如菜单调整,连接调整,广告位的调整等
二、最终采用了如下的方案进行
1 使用freemarker进行静态化
2 将菜单,广告位等以后可能变化的地方,使用JS进行操作。 一些地方采用多个连续的JS,方便以后进行整体调整。
3 通过urlrewrite 将访问转到静态化后的页面
4 通过404的错误处理,对尚未静态化的页面进行处理
5 静态化时,考虑到帖子量在百万级别,为了防止一个文件夹下面有太多文件,决定根据帖子编号的末尾2位数字进行文件夹分组,比如12345 则分配到 45这个子文件夹里面,67890 则分配到90这个文件夹里面。这样就将帖子近似均分到100个文件夹,每个文件夹的帖子在1万个,还可以接受。如果以后帖子再多,我就再考虑分成1000个文件夹了。这个设置要为以后的扩容留有余地。
三、具体操作
1 根据现有帖子页面制作ftl的模板,里面要考虑js的脚本位置。
2 制作批量生成的程序,为减轻服务器的压力,以某个数据库备份为蓝本,在本地完成这部分帖子的初始化,生成htm文件,然后将静态化好的目录整个打包上传到服务器。
3 启动404的处理,比较新的帖子如果没有被静态化,则由这个程序进行处理
4 帖子管理程序改造,在帖子保存时自动进行静态化
5 启动urlRewrite 其中比较关键的部分是
RewriteRule ^/view-([0-9]*?)([0-9]{2}).htm /laozizhu/$2/$1$2.htm [PT]
里面将帖子编号的最后2位单独分组出来,作为目录名,如果以后帖子多了,可以用最后三位来分组了。只需要再次生成帖子,然后简单的修改这个规则即可,前台访问不受任何影响。
四、效果:
目前网站访问量已经达到每天7w的独立IP,tomcat占用内存不超过300M,系统线程数一直在最低的线上。
五、总结
静态化,还是针对大访问量的最佳方案,不是伪静态化,而是真正的静态化。
- 网站静态化的第一部分,百万帖子页面
- 网站静态化的第一部分,百万帖子页面
- 网站页面静态化
- 网站静态页面的生成
- 很多网站的静态页面
- 网站页面静态化方案
- 网站页面静态化方案
- 网站页面静态化方案
- 网站页面静态化方案
- 网站页面静态化方案
- 网站页面静态化方案
- 网站页面静态化方案
- PHP网站页面静态化
- 网站页面静态化处理
- 网站页面静态化方案
- java网站页面静态化
- 网站首页页面静态化
- 第一个静态页面的制作模仿
- 使用ApexSQL Log来查看sql server的日志文件
- C#执行存储过程的简化
- NHibernate Step by Step (三) Configuration和Sessionfactory
- VC6.0数据库编程之MFC ODBC
- NHibernate Step by Step (四)Session、Query及HQL
- 网站静态化的第一部分,百万帖子页面
- 基于XP架设Web和FTP服务器
- c指针总结
- C++中的动态空间扩充方法
- 关键字 mutable (c++)
- 在OpenCV中自适应确定canny算法的分割门限
- 默认构造器的介绍 以及 构造器的使用方法
- Winodows Mobile 改变菜单栏 二级菜单选中状态
- 在Eclipse中怎么样导进已建好的HTML模板?