kaixinstudy.com网站的编写历程

来源:互联网 发布:网络语坠吼什么意思 编辑:程序博客网 时间:2024/04/30 17:10

程序员都是一名闷骚客。

编写网站的初衷是觉得自己在走向高级,走向资深程序员的路上,平常自己会阅读一些优秀的文章,以提升一点闷骚客的气质。这里我很感谢那些奉献的人。而对这些优秀的文章我一般会放在收藏夹里,放在云笔记里。作为一名闷骚客,这个收藏的过程我不会宣扬,但是我也要像雷锋一样把它记录并汇总起来,整理后再分享给大家。所以就建立个网站,把平常有助于推进自己进步的文章放在这里,或许能为来阅读的你带来一点帮助。


总结一下网站上线开发和简单优化过程:


一、时间方面,第一版上线的编写
1. java代码编写,后台管理页面编写用了4天(业余时间)
2. 前台页面用了5天(业余时间)

二、技术选型方面:
系统采用了 springmvc,springjdbc,spring主流框架来实现,并集测了 druid, logback, fastjson,ehcache 等优秀的开源组件
系统管理页面采用了国产的dwz,前台页面显示用了bootstrap。在编辑器方面选择了百度的UEditor(该框架自身还是有少许bug)


三、系统配置和软件集成方面:
代码编写完成后,使用了阿里云提供的512m内存的centos云主机,感谢oschina的优惠券。并在云主机上安装了Tomcat和mysql作为运行支撑。
以下是云主机的配置情况:

 地域:杭州
 CPU:1核
 内存:512MB
 带宽:1Mbps
 操作系统:CentOS 6.3 64位
 云盾:是

系统运行支撑选择的是:

tomcat 版本选择的是 tomcat7
java   版本选择的是 java7

mysql  版本选择的是 mysql5.1

四、系统小优化方面:

  1. 详情页面内容静态化
    一开始系统上线未进行页面静态化,速度方面依靠的是Ehcache缓存组件,展示时直接采用了编写jsp tag的方式组装数据展示。从第一次上传文章有有几天后,就感觉文章的长度还是比较长的,而且如果对这些文章内容进行缓存那么很容易达到内存上限,所以,就花了半个小时对详情页面的内容作了静态化处理,然后直接存储在本地文件夹中,静态化的方式也从最初选择 velocity 之类的组件改成了直接用 IO 流来读写和生成静态文件。

  2. 系统加载的脚本采用CDN

    因为系统需要加载js之类的文件,通过firebug查看发现这方面消耗了大量的加载时间,所以在网络上找了一些CDN公共库来加速。目前采用的是百度的 CDN 库。对国内的CDN情况比较大家可参阅“国内网站常用的一些CDN公共库”


  3. 调整JVM内存大小和Tomcat的配置
    为了增加显示速度,特意将tomcat中的内存及压缩进行了调整,值得一说的是配置压缩后反应特别明显:

    未压缩前单页面就有了47k,压缩后竟然只有了5.5 KB。

    具体配置是在tomcat的Server.xml中添加了如下配置

  • compression="on" compressionMinSize="2048" compressableMimeType="text/html,text/xml,text/javascript,text/css,text/plain"

    更多的Tomcat优化,请参见 Tomcat 7优化前及优化后的性能对比

  • 增加浏览器缓存配置(此处利用tomcat提供的过滤器实现)

    1. <filter>
              <filter-name>ExpiresFilter</filter-name>
              <filter-class>org.apache.catalina.filters.ExpiresFilter</filter-class>
              <init-param>
                  <param-name>ExpiresByType image</param-name>
                  <param-value>access plus 30 days</param-value>
              </init-param>
              <init-param>
                  <param-name>ExpiresByType text/css</param-name>
                  <param-value>access plus 30 days</param-value>
              </init-param>
              <init-param>
                  <param-name>ExpiresByType application/javascript</param-name>
                  <param-value>access plus 30 days</param-value>
              </init-param>
      </filter>
      <filter-mapping>
              <filter-name>ExpiresFilter</filter-name>
              <url-pattern>/*</url-pattern>
              <dispatcher>REQUEST</dispatcher>
      </filter-mapping>


    2. 剩下的就是对数据库添加了若干个索引,比如对路径查找的地方添加了索引,这里略过

  • 0 0
    原创粉丝点击