DNS预获取(dns-prefetch)

今天翻看twitter的源码的时候看到了一下内容:

<link rel=”dns-prefetch” href=”http://a0.twimg.com”/>

<link rel=”dns-prefetch” href=”http://a1.twimg.com”/>

<link rel=”dns-prefetch” href=”http://a2.twimg.com”/>

<link rel=”dns-prefetch” href=”http://a3.twimg.com”/>

<link rel=”dns-prefetch” href=”http://api.twitter.com”/>

查阅了相关资料,知道DNS Prefetch也就是DNS预获取,也是前段优化的一部分。在前段优化中关于DNS的有两点:一是减少DNS的请求次数,第二个就是进行DNS预先获取。

DNS Prefetch 已经被下面的浏览器支持

  • Firefox: 3.5+
  • Chrome: Supported
  • Safari 5+
  • Opera: Unknown
  • IE: 9 (called “Pre-resolution” on blogs.msdn.com)

默认情况下浏览器会对页面中和当前域名(正在浏览网页的域名)不在同一个域的域名进行预获取,并且缓存结果,这就是隐式的DNS Prefetch。如果想对页面中没有出现的域进行预获取,那么就要使用显示的DNS Prefetch了,也就是使用link标签:

<link rel=”dns-prefetch” href=”http://api.twitter.com”/>

DNS Prefetch应该尽量的放在网页的前面,推荐放在<meta charset=”/>后面。

PS:可以通过下面的标签禁止隐式的DNS Prefetch。
<meta http-equiv=”x-dns-prefetch-control” content=”off”>

内容整理自:DNS-Prefetching

参考:
网站优化应重视 DNS 预获取(DNS Prefetching)

69 阅读 | 没有评论
2012年1月16日 | 归档于 LAMP
标签: DNS

如何设置一个严格30分钟过期的Session

问题是Laruence在微博上提出的:

我在面试的时候, 经常会问一个问题: “如何设置一个30分钟过期的Session?”, 大家不要觉得看似简单, 这里面包含的知识多着呢, 特别适合考察基本功是否扎实, 谁来回答试试? 呵呵

说实话,如果是面试我的话,我回答不好。我找了一下stackoverflow发现有人讨论过同样的问题,How do I expire a PHP session after 30 minutes?,看了一下Gumbo回复应该是最好的。过了不久Laruence也整理了一篇文章,讲的更全面一些。 Gumbo说的对,要回到好这个问题只要弄清楚session.gc_maxlifetimesession.cookie_lifetime这两个配置的原理就可以了。 session.gc_maxlifetime这个时间是指的Session过多少时间会被session GC回收。这里需要主要以下几点

  • GC启动本身是有概率的( session.gc_probabilitysession.gc_divisor
  • 不同的脚本具有不同的 session.gc_maxlifetime 数值但是共享了同一个地方存储会话数据,则具有最小数值的脚本会清理数据。此情况下,与 session.save_path 一起使用本指令
  • GC和这个时间比较的时候是用的sesssion文件的mtime( >PHP 4.2.3)而不是atime

session.cookie_lifetime

这个是Server发送给浏览器的cookie过期时间

所以只要明白了这两个配置的原理,那么这个问题至少会回答及格(我认为)。

所以手册很重要,不管是哪种技术,如果把手册研究一篇,搞懂80%以上,那么不是大牛也是个高级工程师鸟。

 

74 阅读 | 没有评论
2012年1月10日 | 归档于 LAMP
标签: PHP基础

MySQL中得到当前使用的数据库

在MySQL中用use 切换使用的数据库(或者在PHP中用mysql_select_db函数),反过来我们怎样知道正在使用的是哪个数据库呢?

这种需求很少遇到,但是还是会遇到的:)

所以找了一下,发现MySQL可以通过select databse()命令来查看当前使用的数据库。

ps:MySQL database函数

推荐:Stop Making Apps

再搭车推荐:

《他们在毕业的前一天爆炸 》《听说》《那些年,我们一起追的女孩》值得一看

71 阅读 | 没有评论
2012年1月5日 | 归档于 LAMP
标签: MySQL

让2012来的更猛烈些吧

好吧,2012真的要来了!

除了上面一句,一下内容算流水账一类的内容了。

对我而言,2011年如果用一个词来描述的话,我想应该是‘初来乍到’,最大的感受就是“不容易”,关键词是“实习、毕业、父母、工作”。

2011年的时间线

2011年1月8日,考完试我就来到了北京想找一个实习机会。因为大四下学期基本上没有什么课程了,主要就是实习,考试前已经有同学去寻找实习机会了。毕竟是初生牛犊,来北京是慎重考虑的结果,而且做好了各种准备,准备了两个月左右的生活费(来之前问过一些在北京的朋友,一个月生活费,省着点的话大概2000左右),联系了一些在北京的朋友必要时提供一些帮助。来到之后,随便找了一个房子(其实是地下室吧),买了些生活必需品,之后的事情就是找工作了。经历了多次面试之后,最后决定去猛买实习,其实在猛买不像是实习,更像是正式工作,学到了很多东西。因为自己初来乍到也犯过很多错误。

2011年5月下旬,因为最后的毕业答辩要回到学校才行,随启程返回烟台。之后一个月就是各种搞论文、各种聚会、各种玩了,那是另外一个故事了,一直想写一下最后的那一个月的生活,以后有可能再补上吧!

2011年6月10日,处理完学校的事情之后回到北京,来之前我已经给张总发了一封离职邮件说明一下。所以接下来又要重新找工作,这次面试的都是一些稍大些的公司,经过一月左右的尝试,最后选择了金鹰网(2011年7月12日)。

接下来是两个月安稳时期,应是在8月初,部门经理跟我说我们部门要搬到长沙去,金鹰网北京这边应该算是一个办事处,大部队是在长沙那边,当时我的同意去长沙,毕竟年多走一些地方,长长见识是好的。

于是乎8月下旬迁往长沙,到长沙不到一周,我姐打来电话说我爸得了食道癌,当时听了之后,我一时真不知道应该怎么办了,下午跟部门经理请了两周的假。我爸得病的事突如其来,对我的打击很大,当时回济南以后就是安排老人到济南做手术,医生说如果不做手术两三个月后就不能吃东西了(其实当时吞咽已经有困难了),之后20多天就是在医院照顾父亲,值得庆幸的是父亲手术很成功。在 那20天了哭了很多次,想了很多的事情,有很多感触。

2011年10月4日回到长沙,基于当时父亲的情况,我不想走远了。和部门经理商量之后准备回北京。

2011年10月中旬再次回到北京。

毕业第一年走的不是很顺利,但这样已经很好了。

感受

  • 无力,这一年我感到前所未有的无力感,太弱小,很多东西无法改变(也是我不够努力)。
  • 人生最重要的是健康快乐,对于我们做IT的人更是如此,要多锻炼,少熬夜!
  • 坚持真的很重要,永远不要放弃。
  • 学海无涯,技术、生活、感情各个方面都有学不完的知识

收获

对自己的认识深了一层,知道自己真正想要什么东西了,其实内心一直知道自己想要什么,只不过自己不知道。

买了kindle,读书多了起来。

2012年

  • 希望爸妈、姐、侄女可以健健康康、平平安安!
  • 自己可以有所作为
  • 走更多的地方,认识更多的朋友
  • 可以赚更多的钱
  • 脱光
  • 玛雅预言失败

附:
2009总结

93 阅读 | 没有评论
2011年12月31日 | 归档于 快乐生活
标签: 总结

关于CSDN用户数据泄露的一些思考

“有很多用户的密码在网上飘荡,而且它还是明文的”

CSDN 600万的用户信息(用户名、密码和邮箱)泄露了,而且密码是明文存储的。之后又爆出了人人、多玩等众多网站的用户信息也被泄露了。当然这只是黑客门放出的一部分信息,只是冰山一角,不过管中窥豹可以知道现在互联网是多么的不安全,多么的没有隐私,翻开手机看看手机里的那些垃圾短息吧!还有接到的那些很多莫名其妙的电话。

毋庸置疑互联网时代安全是一个大问题,但是互联网的安全性和开放性始终一对矛盾,在一个开发的系统中想实现绝对的安全似乎是不可能的。在2011年的尾巴上的这次信息泄露事件,从另一侧面来看反而是一件好事,无论对于网站开发人员还是最终用户,大家的安全意识应该在这次事件中有一个提高。

如何保证信息的安全?

(1) 加密算法的选择

MD5SHABcrypt() 、PHK、SRP等究竟应该选择哪一个算法比较安全。这里做了一个关于Bcrypt 、PHK、SRP的讨论,作者指出一个越快的加密算法越不安全,快即意味着破解或者攻击所需要的时间也会减少,所以选择加密算法加密速度是一个考虑的因素,作者最后推荐的加密算法是Bcrypt。

牛逼、并且最靠谱的方法可能是自己开发一个加密算法、当然开发的算法强度至少要达到MD5,然后要严格保密这种加密算法(这又是个问题),那么被破解的概率就要小很多了。

还有一点就是选择常用的加密方法,虽然是一个笨得思路,但也许能起到一些作用。毕竟现在最完备的字典应该是MD5的,如果采用非MD5的加密方法,那么被字典攻击的时间消耗就要更长一些。

更多关于加密算法选择的讨论:

(2)如何加密

对于用户密码来说一般都是单向加密,加密时一定要加salt,而且要每一个用户一个salt,这样就会大大的增加字典破解的难度,如果选用MD5这种快速加密方法,推荐至少加密两次。

(3)强制用户使用复杂密码,这一招也很有用

用户应该怎样管理自己的密码

2009年的时候写过一篇关于密码管理的文章,这里不再重复了。

关于安全问题的讨论

相关网站
PS:
  • 今天又发现天涯4000万的用户数据,又是明文存储。不过事件的发展越来越阴谋论了,互联网在这里真好玩。(update: 2011-12-25)

未完待续···

166 阅读 | 没有评论
2011年12月22日 | 归档于 LAMP
标签: CSDN, 安全

SQL中LIKE的另类玩法

设想一个场景,我有个关键词屏蔽词库(应该很多网站都有吧),所有的关键词都存储在MySQL中,怎样查询某个字符串是否含有屏蔽关键词?

比如我们有一个屏蔽词 tom,要屏蔽任何含有tom的词语。

通常情况下LIKE这样用

SELECT * FROM `table` WHERE field LIKE ’%字符串%’

下面我们这样玩,来解决上面的问题

SELECT * FROM `table` WHERE ‘字符串’ LIKE CONCAT(‘%’,field,’%')

PS:

这让我想起了初中时数学课中经常用来做几何证明的逆向思考方式。

91 阅读 | 没有评论
2011年12月21日 | 归档于 LAMP
标签: MySQL