HTML代码到底该不该压缩

在我的插件Super Static Cache的使用过程中,经常会有人问我这样的问题,怎么样让Super Static Cache插件支持我的HTML压缩插件,本文这里不谈技术实现问题,着重来分析一下现在的网站有没有必要再进行HTML代码压缩。

代码压缩压缩的是什么?

HTML的全称是超文本标记语言,HTML网页本身是一种文本文件,通过在文件中添加标记符,可以告诉浏览器如何显示其中的内容,包括文字大小,颜色,图片显示等等。这就意味着在文本文件中的一些特定意义的字符可以在浏览器显示的时候就不一样了,HTML代码压缩就是压缩这些在文本文件中有意义,但是在HTML中不显示的字符,包括空格,制表符,换行符等,还有一些其他意义的字符,如HTML注释也可以被压缩。

有了这个基础,我们挑选网络上的100张未经过HTML压缩的页面进行统计。

#!/usr/bin/env python
# -*- coding:utf-8 -*-
import urllib2,re
import matplotlib.pyplot as plt

htmlsp = re.compile(r"[\r\n\t]")

def htmlcompress(html):
    html =  htmlsp.sub("",html)
    return html.replace("  "," ")

urls = open("urls.txt","rb")
comdation = list()
while True:
    url = urls.readline()
    if not url:
        break
    if not len(url):
        continue
    try:
        content = urllib2.urlopen(url).read()
    except:
        continue
    unlen = len(content)
    comlen = len(htmlcompress(content))
    comra = 100.0*(unlen*1.0-comlen*1.0)/unlen
    obj = "uncompress:%d bit, compress:%d bit, compressdatio: %f%%"%(unlen,comlen,comra)
    print obj
    comdation.append(comra)

plt.ylabel("compressdatio")
plt.plot(comdation)
plt.show()

…阅读更多>>

蒙特卡罗方法和随机数

蒙特·卡罗方法(Monte Carlo method),也称统计模拟方法,是二十世纪四十年代中期由于科学技术的发展和电子计算机的发明,而被提出的一种以概率统计理论为指导的一类非常重要的数值计算方法。是指使用随机数(或更常见的伪随机数)来解决很多计算问题的方法。与它对应的是确定性算法。蒙特·卡罗方法在金融工程学,宏观经济学,计算物理学(如粒子输运计算、量子热力学计算、空气动力学计算)等领域应用广泛。

蒙特卡罗方法最典型的应用是求圆周率π,如下图,在坐标系中,有一个以(0,0)为圆点,半径为1的圆,接下来画一个边长为2的正方形,做到把圆内切在正方形上,如图:
获取圆周率的方法 …阅读更多>>

如何在PHP7中安装mysql扩展

PHP是最流行的web脚本编程语言,目前全球有超过81.7%的服务器后端都采用它,然而它的运行效率一直广受诟病,为了提供PHP的运行效率,Facebook甚至开发HHVM,用来把PHP代码转换成字节码以提高其效率。为了对抗HHVM,2015年10月PHP7正式发布,相对于PHP5,PHP7有非常大的性能提升,关于其和HHVM性能的对比,可以查看鸟哥的PHP7 VS HHVM (WordPress).

相对与PHP5,PHP7的最大变化之一是移除了mysql扩展,推荐使用mysqli或者pdo_mysql,实际上在PHP5.5开始,PHP就着手开始准备弃用mysql扩展,如果你使用mysql扩展,可能看到过这样的提示”Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in”。所以在以后的程序中,为了保持兼容性,要尽量减少使用mysql扩展用于数据库连接。 …阅读更多>>

PHP用户登陆限制的实现

哆麦询盘管理系统的开发过程中,需要了这样的问题:出于信息安全的考虑,希望给每个能进入系统的人员一个账户,而不是所有人共用一个账户,并且一个账户同时只能一人登陆。刚开始的做法是登陆加锁,当用户登陆之后,对此用户进行标记,若此用户未下线状态下进行第二次登陆尝试,则禁止其登陆。这样做就解决了单账户多用户同时登陆的问题,但是实际操作中,却遇到了更大的问题:用户登陆过程中对其进行了加锁,则用户离开时就必须要进行解锁操作,而很多用户离开网站的习惯是直接点击浏览器的关闭按钮,这就导致无法解锁,最终导致用户正常登陆也受到限制。
PHP用户登陆限制的实现
…阅读更多>>

Web服务器网关接口实现原理分析

Web服务器网关接口(WSGI),又叫Python Web服务器网关接口(Python Web Server Gateway Interface),是用来描述web服务器与网站应用程序通信和应用程序如何处理请求的规范。它的第一个版本于2003年发布,从那时起,wsgi就成为了python web应用的开发标准,目前最新的版本是v1.0.1,于2010年9月26日发布。

使用python做过web开发的对下面的例子应该非常熟悉,运行之后访问则会显示出Hello,web!

from wsgiref.simple_server import make_server

def application(environ, start_response):
    start_response('200 OK', [('Content-Type', 'text/html')])
    return '<h1>Hello, web!</h1>'

httpd = make_server('', 80, application)
print "Serving HTTP on port 80..."

httpd.serve_forever()

在上面的例子中,几行代码就可以搭建出一个HTTP服务器,并没有使用像apache,nginx一样的专用web服务器,而是使用wsgiref中的模块。对于这个服务来说,application是用户层的代码,而wsgi对内提供应用接口,对外充当web服务器。
WSGI流程 …阅读更多>>

如何申请GeoTrust的Extended Validation SSL证书

网站HTTPS化的作用就不用说了,单单对网站排名来说,百度和Google分别确认https的网站比http的网站排名会更高,详情可以点击这里:百度开放收录https站点公告,HTTPS as a ranking signal。为了顺应HTTPS化的潮流,越来越多的安全提供商推出了免费HTTP证书服务,像startssl,中国的沃通都退出了1年免费HTTP证书服务,国外更是成了Internet Security Research Group(https://letsencrypt.org)组织,专门免费提供HTTP证书。

Ev SSL证书在浏览器上的展示

HTTP证书的作用不仅可以让网站更安全,一些安全组织推出了针对企业和组织的Extended Validation证书,俗称Ev SSL,不仅仅对网站内容进行保护,还对组织机构进行审核,很大程序上减少了网络欺诈,当用户访问你的网站时,大多数浏览器都会显示公司名称,给出信任标识。如果你有一个外贸企业网站,那么我推荐你考虑在网站上使用Ev SSL证书。 …阅读更多>>