优化Apache, 消除Page Speed中expiration not specified

0
本文是专题:建站日记中的第12篇,共12篇

前情提要:

Google Lab 里有一个很好的工具 Page Speed,能够分析网站是不是够快,以及如何改进。提供非常详细的改进指导。

我测试了网站http://zhuwenhao.com 其中有一个严重问题,名字叫 expiration not specified 就是说很多静态资源没有指定过期时间,所以不能被浏览器很好的做缓存,严重影响性能。这里是谷歌提供的文档 LeverageBrowserCaching

我是这样搞定的:

1:在/etc/sysconfig/apache2中开启Apache模块 mod_headers  mod_expires

2:在/ect/apache2/conf.d/中新建一个mycache.conf(其实我早就建好了:)

3:使用如下的代码

View Code APACHE
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
<IfModule mod_expires.c>
  ExpiresActive on
 
# Perhaps better to whitelist expires rules? Perhaps.
  ExpiresDefault                          "access plus 1 day"
 
# cache.appcache needs re-requests in FF 3.6 (thx Remy ~Introducing HTML5)
#  ExpiresByType text/cache-manifest       "access plus 0 seconds"
 
# your document html
  #ExpiresByType text/html                 "access plus 0 seconds"
 
# data
 # ExpiresByType text/xml                  "access plus 0 seconds"
 # ExpiresByType application/xml           "access plus 0 seconds"
 # ExpiresByType application/json          "access plus 0 seconds"
 
# rss feed
#  ExpiresByType application/rss+xml       "access plus 1 hour"
 
# favicon (cannot be renamed)
  ExpiresByType image/x-icon              "access plus 2 months"
 
# media: images, video, audio
  ExpiresByType image/gif                 "access plus 1 month"
  ExpiresByType image/png                 "access plus 1 month"
  ExpiresByType image/jpg                 "access plus 1 month"
  ExpiresByType image/jpeg                "access plus 1 month"
  ExpiresByType video/ogg                 "access plus 1 month"
  ExpiresByType audio/ogg                 "access plus 1 month"
  ExpiresByType video/mp4                 "access plus 1 month"
  ExpiresByType video/webm                "access plus 1 month"
 
# htc files  (css3pie)
  ExpiresByType text/x-component          "access plus 1 month"
 
# webfonts
  ExpiresByType font/truetype             "access plus 1 month"
  ExpiresByType font/opentype             "access plus 1 month"
  ExpiresByType application/x-font-woff   "access plus 1 month"
  ExpiresByType image/svg+xml             "access plus 1 month"
  ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
 
# css and javascript
  ExpiresByType text/css                  "access plus 2 months"
  ExpiresByType application/javascript    "access plus 2 months"
  ExpiresByType text/javascript           "access plus 2 months"
  ExpiresByType text/x-js                 "access plus 2 months"
 
  <IfModule mod_headers.c>
    Header append Cache-Control "public"
  </IfModule>
 
</IfModule>

我的解决方法参考了帖子: specifing-expiration-date-for-static-files-caches 但代码是不一样的,请注意根据需要修改

重申我用的是 openSUSE, 所以配置文件的路径可能不同.

服务器升级至openSUSE 11.4 Apache改为Worker+PHP+fastcgi

0
本文是专题:建站日记中的第11篇,共12篇

利用假期,我把本站的服务器和配置都做了下升级.

openSUSE从11.2升级至11.4,非常成功,没有遇到大问题.

主要步骤:

1, 更新Software Repositories指向11.4版本的库.

2, zypper update , 解决依赖性. 升级一些包,降级一些包. 以前用开发分支的Apache, PHP, mysql要先降级.幸好这个危险的过程没有出任何问题.

3, zypper dup, 将会做完全的版本升级.

然后是Apache配置由perfork改为Worker的MPM.

1, 删除mod_php, 确认PHP支持CLI

2, 安装 mod_fcgid mod_fastcgi

3, 修改 /etc/sysconfig/apache2 中的APACHE_MODULES字段, 删除php, 增加actions, facgid, fastcgi

4, 修改路径 /etc/apache2/conf.d/ 中的 mod_fcgid.conf 去掉<FilesMatch “\.php$”>这一块内容的注释.

最后 service apache2 restart 就搞定了.

完成后,可以看出Apache本事基本不消耗多少内存,但是PHP占用内存仍然很多. 所以Apache头上占用内存的坏名声可以洗脱了.一切都是PHP惹的祸.

在这种配置下, 使用 ab 工具测试, 在Apache过载之后,网页会出现500错误,但随着DDOS的结束, server能够自行恢复. 不像以前用perfork的时候,Apache就死了. 读Apache错误日志, 会发现Apache给失去响应的PHP发了一堆的signal 11. Good Job!

 

WordPress“正在执行例行维护”的解决办法

0

本文转自 月光博客, 还好我用wordpress一直没有遇到过这个问题.

折腾WordPress的时候,升级了一个主题,结果主题升级失败,WordPress首页也打不开了,所有的页面都一直提示:“正在执行例行维护,请一分钟后回来。”

我等了不止一分钟,系统还是没有恢复正常,只好FTP登录主机看一下,后来发现 WordPress 根目录多了一个 .maintenance 文件,将这个文件删除,之后再刷新一下WordPress首页,显示正常。

这个经验告诉我们,不要在正式环境下随便升级主题模版。

作者:williamlong

 

一些软件设计的原则

0
本文是专题:程序员修炼之路中的第6篇,共6篇

转载自 http://coolshell.cn/articles/4535.html

作者 陈皓

以前本站向大家介绍过一些软件开发的原则,比如优质代码的十诫Unix传奇(下篇)中所以说的UNIX的设计原则。相信大家从中能够从中学了解到一些设计原理方面的知识,正如我在《再谈“我是怎么招聘程序”》中所说的,一个好的程序员通常由其操作技能、知识水平,经验层力和能力四个方面组成。在这里想和大家说说设计中的一些原则,我认为这些东西属于长期经验总结出来的知识。这些原则,每一个程序员都应该了解。但是请不要教条主义,在使用的时候还是要多多考虑实际情况。其实,下面这些原则,不单单只是软件开发,可以推广到其它生产活动中,甚至我们的生活中

Don’t Repeat Yourself (DRY)

DRY 是一个最简单的法则,也是最容易被理解的。但它也可能是最难被应用的(因为要做到这样,我们需要在泛型设计上做相当的努力,这并不是一件容易的事)。它意 味着,当我们在两个或多个地方的时候发现一些相似的代码的时候,我们需要把他们的共性抽象出来形一个唯一的新方法,并且改变现有的地方的代码让他们以一些 合适的参数调用这个新的方法。

参考http://en.wikipedia.org/wiki/Don%27t_repeat_yourself

Keep It Simple, Stupid (KISS)

KISS原则在设计上可能最被推崇的,在家装设计,界面设计 ,操作设计上,复杂的东西越来越被众人所BS了,而简单的东西越来越被人所认可,比如这些UI的设计和我们中国网页(尤其是新浪的网页) 者是负面的例子。“宜家”(IKEA)简约、效率的家居设计、生产思路;“微软”(Microsoft)“所见即所得”的理念;“谷歌”(Google) 简约、直接的商业风格,无一例外的遵循了“kiss”原则,也正是“kiss”原则,成就了这些看似神奇的商业经典。而苹果公司的iPhone/iPad 将这个原则实践到了极至。

 

把一个事情搞复杂是一件简单的事,但要把一个复杂的事变简单,这是一件复杂的事。

参考http://en.wikipedia.org/wiki/KISS_principle

Program to an interface, not an implementation

这是设计模式中最根本的哲学,注重接口,而不是实现,依赖接口,而不是实现。接口是抽象是稳定的,实现则是多种多样的。以后面我们会面向对象的SOLID原则中会提到我们的依赖倒置原则,就是这个原则的的另一种样子。还有一条原则叫 Composition over inheritance(喜欢组合而不是继承),这两条是那23个经典设计模式中的设计原则。

Command-Query Separation (CQS)  – 命令-查询分离原则

  • 查询:当一个方法返回一个值来回应一个问题的时候,它就具有查询的性质;
  • 命令:当一个方法要改变对象的状态的时候,它就具有命令的性质;

通常,一个方法可能是纯的Command模式或者是纯的Query模式,或者是两者的混合体。在设计接口时,如果可能,应该尽量使接口单一化,保证 方法的行为严格的是命令或者是查询,这样查询方法不会改变对象的状态,没有副作用,而会改变对象的状态的方法不可能有返回值。也就是说:如果我们要问一个 问题,那么就不应该影响到它的答案。实际应用,要视具体情况而定,语义的清晰性和使用的简单性之间需要权衡。将Command和Query功能合并入一个 方法,方便了客户的使用,但是,降低了清晰性,而且,可能不便于基于断言的程序设计并且需要一个变量来保存查询结果。

在系统设计中,很多系统也是以这样原则设计的,查询的功能和命令功能的系统分离,这样有则于系统性能,也有利于系统的安全性。

参考http://en.wikipedia.org/wiki/Command-query_separation

You Ain’t Gonna Need It (YAGNI)

这个原则简而言之为——只考虑和设计必须的功能,避免过度设计。只实现目前需要的功能,在以后您需要更多功能时,可以再进行添加。

  • 如无必要,勿增复杂性。
  • 软件开发先是一场沟通博弈。

以前本站有一篇关于过度重构的文章,这个示例就是这个原则的反例。而,WebSphere的设计者就表示过他过度设计了这个产品。我们的程序员或是架构师在设计系统的时候,会考虑很多扩展性的东西,导致在架构与设计方面使用了大量折衷,最后导致项目失败。这是个令人感到讽刺的教训,因为本来希望尽可能延长项目的生命周期,结果反而缩短了生命周期。

参考http://en.wikipedia.org/wiki/You_Ain%27t_Gonna_Need_It

(更多…)

IEEE中文快报

0

2011年4月

本期热点内容包括:

1) IEEE POCO会议(北京)开始注册了

2) IEEE国内外要点新闻

3) IEEE在线讲座精选

4) IEEE专业技术协会介绍(完整)

5) IEEE标准协会介绍

IEEE POCO会议(北京)开始注册了!

“第六届 IEEE 会议组织者年度盛会( POCO )”注册网站已经开通。 2011 POCO 会议将于 2011 7 21 日至 23 日在中国北京举行,这也是 POCO 会议第一次在亚太地区举行。本次盛会将给会议组织者提供一次绝佳的机会和国际同行交流,获得关于举办 IEEE 国际会议的知识,了解更多IEEE 会议的最新进展。

如果您有任何问题,有一个讨论的主题或想提出一些想法,请联系 Kevin Hanft k.hanft@ieee.org )。注册将开放至 2011 6 15 日,没有注册费,而且提供免费午餐,座席有限,现在就开始注册吧!

请访问: http://guest.cvent.com/d/2dqggx/1Q 进行注册。

有关 POCO 的其他信息,请访问:

http://www.ieee.org/conferences_events/conferences/organizers/poco/index.html

IEEE要点新闻

现在登录http://www.comsoc.org/newjoinspecial_china加入IEEEIEEECOMSOC,最低只需27.5美元(电子会员),13.5美元(学生会员),就可以享受IEEE会员和IEEE COMSOC(通信协会)会员的双重礼遇!2011年会员资格将持续到1231日。现有会员欲加入IEEECOMSOC请发邮件至china@ieee.org,将有惊喜等着您!

2011321日,IEEE SpectrumIEEE.TV获得商业刊物类Jesse H. Neal Awards卓越编辑奖。

2011321日晚,由IEEE山东大学学生分会和山东联通公司联合主办的IT培训系列讲座(第一期)在山东大学信息学院四楼报告厅成功举办。

2011325-28日,由IEEE CSIEEE中国代表处主办的IEEE CSDACertified Software Development Associate)、CSDPCertified Software Development Professional)高级培训班成功举行。 本次培训班共吸引来自企业和高校等30余名高级软件工程师和教师参加。 328日上午,IEEE CS还向已经通过CSDP考试,并通过培训师课程的中国首批认证讲师颁发了证书。

2011328日,IEEE标准协会宣布已批准两个新的标准开发项目,分别是IEEE 1511.1™电力电缆故障分析指南,和IEEE 1775™电力线宽带(BPL)设备的测量程序概述。

2011328日,IEEE标准协会宣布已批准两个新的标准开发项目,分别是IEEE P1828™虚拟世界,和IEEE P1484.11.1™流媒体客户端设备管理。

2011331日,IEEE标准协会宣布已批准IEEE 802.16m(“IEEE本地和城域网标准修订,第16部分:宽带无线接入系统空中接口-先进的空中接口“)。

201141日,IEEE标准协会已批准了一个新项目用于通过现有IEEE标准满足先进汽车运输技术的要求。此外,还批准了修订一个客运列车移动通信标准。

201144日,IEEE宣布新的云计算行动正式启动。作为云计算领域创新的催化剂,它是第一个由全球性的标准开发组织(SDO)在广泛范围内为云计算提出前瞻性倡议的行动。首先批准了两个新的标准开发项目IEEE P2301™,云可移植性和互操作性概况指南,以及IEEE P2302™,云际互操作性和联盟标准草案。

201145日,IEEE里程碑记录了发现超导100周年,并为此举行了一天的研讨会来纪念这个重要的技术成就。

2011412日,IEEE标准协会宣布批准802.3bg-201140Gb/ s以太网单模光纤接口,实现在单模光纤上部署40 Gb / s以太网接口。作为IEEE802.3™以太网标准IEEE802.3bg的修改,该标准为运营商顺利和迅速的方式在其网络中采用以太网技术铺平了道路。

2011410-15日,第30IEEE International Conference on Computer Communications (IEEE INFOCOM 2011)在上海国际会议中心隆重举行。此次会议吸引了来自全球1000余名计算机和通信领域的专家学者和企业的科研人员到场参加。在会议的最后一天,还举行为期一天的IEEE WCET(无线工程师)培训。

更多新闻请登录http://cn.ieee.org/newslist.php http://cn.ieee.org/student_activity.php

IEEE在线讲座精选

IEEE Spectrum系列讲座

IEEE GOLD系列讲座

开发运营商级网络管理系统Developing Carrier-grade Network Management Systems

RF工程,传播及天线(RF Engineering, Propagation, & Antennas

最新IEEE.TV精彩内容(http://www.ieee.tv/home

IEEE专业技术协会介绍(完整)

IEEE下属有38个专业技术协会,其协会介绍已经放在IEEE中文网站“关于IEEE”专栏下面,http://cn.ieee.org/about_services.html,请阅读。

IEEE标准协会介绍

IEEE标准协会是世界领先的标准制定机构,其标准制定内容涵盖信息技术、通信、电力和能源等多个领域。目前,IEEE标准协会已经和多个国际标准组织建立了战略合作关系,其中包括国际电工委员会(IEC),国际标准化组织(ISO)以及国际电信同盟(ITU)等。

现在,IEEESA已日益成为新兴技术领域标准的核心来源。目前,IEEE标准协会已经制定了900多个现行工业标准,如众所周知的IEEE 802®有线与无线的网络通信标准和IEEE 1394™标准。同时,还有400多项标准正在制定过程中。IEEESA会员分为个人会员和团体会员两类,更多关于会员信息,请登录http://cn.ieee.org/standards_member.html

此外,IEEE还致力于在大学和工业界的标准教育活动。在全世界大约有450所大学可以在线访问IEEE标准,其中也包括中国的高校,但是目前只有 8-10的高校使用了该功能。美国认证机构ABET 在规划准则中提到了标准,但是标准在大多数课程中的普遍应用还是很少。为此,IEEE专门开发了标准教育网站:http://www.standardseducation.org作为标准教育信息传递的入口。提供:标准教育教程,标准教育案例,IEEE小额基金和学生申请论文,标准主要术语词汇表,参考书目指南,标准制定机构和标准相关术语列表,新闻与专题,其他学习资料链接等多项丰富的内容。欢迎访问!

若对标准和标准教育感兴趣,如有更多问题,请及时联系IEEE中国代表处。

 

Go to Top