[随笔] 6月近况小记 & 一个站点优化问题

近来琐事繁多让我应接不暇~ 一方面经过一段时间的挣扎终于选择出了下家,虽然新东家的WebSense让我很不舒服,以后将会在Perl方面多做一些研究;另一方面本人的人生大事也在准备当中,呵呵~ 近一个月没有来打扫博客了,心想六月尾声的时候上来留下点脚印,给自己的时间留下一些印记。

昨晚刚去影院看了《变形金刚2》,果然是“巨片中的巨片”,不得不佩服麦克.贝的烧钱功夫是越来越炉火纯青了,要知道烧钱容易但是要烧得让舆论都应声齐呼很值就不是那么容易了,哈哈~ 第一次觉得由一堆冰冷的金属组成的机器人也能演出这么有张力的动人故事~

另外就是一些工作中的所得,自己的项目还在酝酿当中,因此先帮另外一个team做一些技术咨询。由于这个项目本身采用drupal来做cms系统,因此遇到的很大一部分主要是一些前端界面的问题。简单统计了一下,主要包括两大方面:一方面还是css、js、flash以及浏览器的问题,这方面就不想说了(太多太杂了);另外很大一部分就是站点性能优化的issue,关于这个issue除了按照YSlow里面提到的优化规则来做一些优化,还遇到一个比较有意思的问题,以下做一下记录,也算是经验积攒吧。

提出这个问题的是client:在IE6中很多图片有闪动的问题。应该说这个是一个比较广泛出现的问题,起初和几个技术人员分析造成这个现象的主要原因有两个:一个是该网站比较多的block是做背景切换的,而IE6中本身就有这方面的bug;另外一个可能是用户选择了IE6>Options>Settings>Every visit to page选项导致浏览器每次访问都会到server请求resource。关于第一个问题,我们可以使用给页面加上document.execCommand("BackgroundImageCache",false,true)来解决,虽然在快速切换的时候还是会有一些问题。但是第二个问题就比较尴尬了,因为这个是浏览器设置问题,当然如果选择IE6>Options>Settings>Automatically就不会出现了。为了和client解释和沟通这个问题,我们甚至还花了一些resource在证明Automatically是IE6的default setting,但是事实证明和客户做这种communication是没有作用的,还是要改。

当然,这个问题从前台设计和代码的角度是很难解决的,就算code再精简,图片size再小,网络问题的影响也是没有办法忽视的,于是我就想从另外一个方向思考,如果说浏览器是否每次都去请求新的resource我们没有办法控制,那么server端的请求回应我们还是可以设置的。由于这批项目用的都是Apache,于是很自然想到mod_expires模块,Good~ Just do it~ 马上在服务器上做测试,没有的话安装该模块~
# /path/to/apache/bin/apxs -i -a -c /path/to/apache-src/modules/metadata/mod_expires.c
# vi /path/to/apache/conf/httpd.conf
+ add 6 lines to the end
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
</IfModule>
测试发现现在就算设置成Every visit to page,IE6也会去local取图片了。但是还有一些不同步的问题可能和drupal写出来的分块代码中css和js的位置比较分散有关系,因此,给css和js都加上expire header:
# vi /path/to/apache/conf/httpd.conf
U modified the block
<IfModule mod_expires.c>
ExpiresActive On
ExpiresByType image/gif A2592000
ExpiresByType image/jpg A2592000
ExpiresByType image/jpeg A2592000
ExpiresByType image/png A2592000
ExpiresByType text/css A2592000
ExpiresByType application/javascript A2592000
ExpiresByType application/x-javascript A2592000
</IfModule>
效果不错,除了一次load之后的访问都表现良好,连第一个问题里面出现的偶尔闪动也不出现了,client确认ok~ 至此这个问题总算完美解决~


原文链接: http://blog.csdn.net/shagoo/article/details/4306255

你可能感兴趣的:([随笔] 6月近况小记 & 一个站点优化问题)