Http协议 压缩

  最近测试代理服务器时,意外的发现使用urlopen请求百度首页时,会返回两种结果,一种是正常的百度首页html源码(以下简称正常结果),一种是‘乱码‘。样例如下:

\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\x8dVKo\xe36\x10\xfe+*\x8d\xbd\x04\xd6\xcb\x89\x13G\xb2\rl\x1c\x17\xbb\xa7\x16\xc5\x16\xc8.\n\x18\x94H\xc9L$QKQ~\xaca\xa0=\xb7\xb7\x9ezj/\xed\xb9\xbd-\x8a\xb6\xbf&\x8bEO\xfd\x0b\x1dJ\x94-\xc7IQ\x08\x90\xc4\xe1\xc7y|3\x1cr\xf8\xc9\xf5g\x93W\xaf?\x9f\x1as\x99&\xe3\xa1~SL\xc6\xc3\x94J\x0cb\x99\x9b\xf4m\xc9\x16#\x14\xf2L\xd2L\x9ar\x9dSd\xe8\xd1\x08I\xba\x92\xb6Z\xe8\x87s,\n*G\xa5\x8c\xcc\x01zD\xc3\x8d\xf9\xe5ss\xc2\xd3\x1cK\x16$m%/\xa7\xa3)\x89),JXvg\x08\x9a\x8cP1\xe7B\x86\xa54\x18\xc0\x901\x174\x1a!;\xc2\x0b5\xb6\xe0\x85\x0c\xe5\xca\x08\xb1\x14\xc7\xd4^\x99\x15n<\x94L&t\xfc\xf1\x87\xbf>\xfc\xfe\xcb\xfd\xfb\xaf\xef\xdf\x7f\xfb\xcf\x1f\xdf\xdd\xff\xf9\xd3\x87_\x7f\xfb\xf8\xe3\xcf\x7f\x7f\xf3\xfd\xd0\xae!\xc3B\xae\xe1\xa3|\xef\x06\x9c\xac7s\xca\xe2\xb9\xf4\\\xc7y\xb6U\xd2\r_P\x11%|i\xae=\\J\xbe\xadP\x118\xed\xb9\xbd|e`\xc1p\xe2\x078\xbc\x8b\x05/3\xe2u\xa2(\[email protected]\xdd\xbc\x1bq\x91v\xcb\xa4\x9b\xb0M\x8aE\xcc2\xcf\xf1sL\x08\xcbb\xf8KX!\xcd\xca\xbe\x97\xf1\x8c\xd6\x8b\xd4\x92M\xce\x0b&\x19\xcf< \x01xZ\xd0-K\xe3M\xc0\x05\xa1\xc2s\xb6x\x13\xf2\x84\x0b\xaf\xe38\xe1\x16{8T\x90F\x16\x9d;[\x96\xe5\xa5\xdc\xe1\xf7&\xb7\x9d\xa5\xc0yN\xc5\xb1\x05\x7f\xb6\x13\xf9)\xcb\xcc6\x0f\x1dU\r\x1b\xad\xc5\x0c\xb8\x94<U3\xf9\xcaW\x997q\xc2\xe2\xcc\x0b!\x8bT\xf8\‘\xefL\x96\x11\xba\xf2\xdc\xbd5\xa5p\xc9\x88\x9c{\x03W\xadj)o\x1b;W*\x1bkG\x0e>\xb0\xef\xfc\x0f-\x86\xa5\xde\xb3\xc6\x8d\x83\x98*\xa2uVzU&!\xbb\x86\xe3\xd7~\x9e\x9f\xb9\x87\xd1%4\x92\xfe.4\x07\xa8\xbc[>\x92\‘\xab\x98\x052\xdb\xd4J.\xfb\xfbXO\xc1\xc4.\x04\xc9s\x0f\xc6_]\xfa\xaa\x90\xcc\x82\xbd\xa3\x9e{\x06\x80}\x1d\x99:\x9d\x84\x90\xb6tg\xd11\xcc\xb3\x01\xac\x08KQ\x00.\xe7L\xb1\x7fh\xbfNQ\xe3\xc0\xb9BWJ\x97s&i\xdb\xb4\xf23\xa1\x12\x14\x98E\x8eCU+\xee\x817^\xe7\xf4t\xd0\x8f"\xbf\xae\xa9]\r\x00m\x05O\x181:=r1\x88\xce|^J\xd8\xbd\xd4K)ae\xea\x9f\x1c\xe2\x1d\xdf\\\xd2\xe0\x8e\x01\xa9\x90\x10,p\x16\xd6\xb5\xbf\x93k\xbc\xc0\xb0\xbc\x80\x82\xad\xe3\x81\x0c6\x94^\xb4"R\x8c\x11V\xe4\t^{,Sv\xcd \xe1\xe1\xdd\xa3\x84\x99n\x0f\xd8\xd0\xac\x9d\x1c\x97W\x93[\xc7\x87\r/Y\x88\x13\x9dyH\xd6\x91\x1b\xaaV\x1a7\xaa\xff\xa7x\x91\x10#P*`o\x1c\x91\xa1\xb4\xb2\\*\xad\xad\x88\xf6R+\x88\xbb;\xc3j\xd0)J\xf8lZ\xd1Um\xaf\xee\x1e{ez\xdf\xb7\x92\x13\x9c\xab\xa7qRW\xd6E\xa0\x9efr\xff\xad\xe5\x0f[\xda\xe3D\x1fS\xa5\xf7O\xff\xf4\x12h\xae\xb7\x97)\xaa\xe0\x9c\xc6~5\xd4\xfd\xc0y\xe0T0PO\x9b6\xa3\x13\x86\xa1\xa1\‘\xfc\xa6\x1b{sF\x08\xcdt\xd4:+\xfd\xde\xf9\xbe:\xd4\x9e\xf6\xeb>\rR\xdb\x1d\xec\x9au\xe5\x7f\x0b\x05\xdbP\xf7\x01\x00\x1a\x0e<\x17\xfb\xbd\xaa<\xdc3\xd1N\xe7\xae\xbd65\xffdu+/\x1f\xef\xeb\xbe\xea\x04\xa7\x03\xab\xf7\xac\xc1\xcc\x9e\xee\xd0\nk\xba\x97\x90\xd7\xed\xd0\xae\xcf\xad\xa1]\x1f\xd4\xea\xe80\xd4\xb19Bp(\xc0\xb1\x10\xc2!H\xd8\xc2`d\x84\xb4\xc6\x96D-\xd2\xc30\xc1EQKf\[email protected]=S\xbb\xf5\x98lv\xac8\x89a\x00g\x95\x01\xe9\xa1\x11\x0fK\x00KQRT\x88\x10\x8c\xc0=\xc0\xb3\xed\xe5ri\x05\x98\x91\xd2\nyj\x03\xda\x0e\xc8,\xe11w\xad<\x8bQ\x95\xcb\x11\xea]8\xa8N\xd2\x08\xb9\xbdK\xd0k\x83\x95\xf1PY\xaelUne8\x85\xd3?B\xea\x0c\xe4\x19\xdc\r\n\xa4}\x8c\x94\xcf\xd5A\xa8\xaf\x08u\xc5\xe8\x15\x8c\xa2\x05NJ\xf8kn*OB\xc3y\x03\xfd/\x94\xcc\x1aT\x15\[email protected]\xa1N\xb2\x86\xb0 6\x9a\xed\xd9\xcc\xa8\x10\x94$\x9fs\xc9UtJ\xda\x18P\x93wK\xadzI\xd0\x8ewX\xb1\xf3&\xc5\xab\x84fqEV\xbf\x8fT\x1f\x02Bsh\xe40\xcb\xa3h\xaf\xf4\xc8\x95\xba\xa7<\x88\xa7(\x83\x94I\xa4l\x17ec\xa5}\x87B\x0fT\xec\r\xd8*\x19M\x86\xeawS\x12\xa5\x8b\x0e\‘\x0e\xa7#9\xa9nl\xed\xb9"\x14\x10\xe7x\x81\x85\x91\x92>Dw\xeaL>\xbd\xba\xb9zsu3\x99L\xae\xaf^O\xa6\xd7_L\x9f_\xbf\x9a\xbe\x80\xef\xcb\xeb7\x08\xfc\xa8\xd7\xe8\xb5F\xbb\xdeH\xd2\xb3na\xe3s\x9cU\x15w\xfb\xb6\xa4b\xad?\xa6k\xb9\x8e5\xb0\xe0\x02a\xdd\x16UDZSu\xa1\x1d\xff\x0b\xaaR\xe1\t\x1f\x0b\x00\x00

  并且,作者尝试了请求五十次,结果如下:

请求地址 返回‘乱码’ &使用代理(阿里云) 返回‘乱码’ &不使用代理
http://www.baidu.com/ 45 26
http://www.baidu.com 0 9

  然后作者查看了异常结果的Response.info(),如下:

Server: Apache-Coyote/1.1
Cache-Control:
Content-Type: text/html;charset=UTF-8
Content-Encoding: gzip
Content-Length: 1285
Set-Cookie: fist_user=1;Domain=.baidu.com;Path=/;Max-Age=300
Pragma: no-cache 

  可以看出,Response可能采用的Gzip编码。使用Gzip对其进行解码,得到的结果与正常结果一样。解码代码如下:

import urllib
import gzip
from StringIO import StringIO
Response= urllib.urlopen("http://www.baidu.com",proxies=proxies)
buf = StringIO(Response)
f = gzip.GzipFile(fileobj=buf)
data = f.read()
print data

  然后,作者搜索了Response+gzip的相关内容,发现使用gzip对Request和Response进行压缩是一种很常用的技术(节省流量),具体的介绍见下文:

HTTP 协议之压缩

附录

  1. 正常网页的Response.info()如下:

    Date: Fri, 26 May 2017 09:47:21 GMT
    Content-Type: text/html; charset=utf-8
    Connection: Close
    Vary: Accept-Encoding
    Set-Cookie: BAIDUID=BC372CE9BA2818456F638398397AA396:FG=1; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
    Set-Cookie: BIDUPSID=BC372CE9BA2818456F638398397AA396; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
    Set-Cookie: PSTM=1495792041; expires=Thu, 31-Dec-37 23:55:55 GMT; max-age=2147483647; path=/; domain=.baidu.com
    Set-Cookie: BDSVRTM=0; path=/
    Set-Cookie: BD_HOME=0; path=/
    Set-Cookie: H_PS_PSSID=23080_1457_21114_22748_22916_20929; path=/; domain=.baidu.com
    P3P: CP=" OTI DSP COR IVA OUR IND COM "
    Cache-Control: private
    Cxy_all: baidu+be1deb4364f132ec4f46c09e73d3c3a2
    Expires: Fri, 26 May 2017 09:47:00 GMT
    X-Powered-By: HPHP
    Server: BWS/1.1
    X-UA-Compatible: IE=Edge,chrome=1
    BDPAGETYPE: 1
    BDQID: 0xe2d7aa44000004ed
    BDUSERID: 0 
  2. 测试源码

    import urllib
    # # a=urllib.getproxies()
    # # print a
    a =‘\x1f\x8b\x08\x00\x00\x00\x00\x00\x00\x03\x8dVKo\xe36\x10\xfe+*\x8d\xbd\x04\xd6\xcb\x89\x13G\xb2\rl\x1c\x17\xbb\xa7\x16\xc5\x16\xc8.\n\x18\x94H\xc9L$QKQ~\xaca\xa0=\xb7\xb7\x9ezj/\xed\xb9\xbd-\x8a\xb6\xbf&\x8bEO\xfd\x0b\x1dJ\x94-\xc7IQ\x08\x90\xc4\xe1\xc7y|3\x1cr\xf8\xc9\xf5g\x93W\xaf?\x9f\x1as\x99&\xe3\xa1~SL\xc6\xc3\x94J\x0cb\x99\x9b\xf4m\xc9\x16#\x14\xf2L\xd2L\x9ar\x9dSd\xe8\xd1\x08I\xba\x92\xb6Z\xe8\x87s,\n*G\xa5\x8c\xcc\x01zD\xc3\x8d\xf9\xe5ss\xc2\xd3\x1cK\x16$m%/\xa7\xa3)\x89),JXvg\x08\x9a\x8cP1\xe7B\x86\xa54\x18\xc0\x901\x174\x1a!;\xc2\x0b5\xb6\xe0\x85\x0c\xe5\xca\x08\xb1\x14\xc7\xd4^\x99\x15n<\x94L&t\xfc\xf1\x87\xbf>\xfc\xfe\xcb\xfd\xfb\xaf\xef\xdf\x7f\xfb\xcf\x1f\xdf\xdd\xff\xf9\xd3\x87_\x7f\xfb\xf8\xe3\xcf\x7f\x7f\xf3\xfd\xd0\xae!\xc3B\xae\xe1\xa3|\xef\x06\x9c\xac7s\xca\xe2\xb9\xf4\\\xc7y\xb6U\xd2\r_P\x11%|i\xae=\\J\xbe\xadP\x118\xed\xb9\xbd|e`\xc1p\xe2\x078\xbc\x8b\x05/3\xe2u\xa2(\[email protected]\xdd\xbc\x1bq\x91v\xcb\xa4\x9b\xb0M\x8aE\xcc2\xcf\xf1sL\x08\xcbb\xf8KX!\xcd\xca\xbe\x97\xf1\x8c\xd6\x8b\xd4\x92M\xce\x0b&\x19\xcf< \x01xZ\xd0-K\xe3M\xc0\x05\xa1\xc2s\xb6x\x13\xf2\x84\x0b\xaf\xe38\xe1\x16{8T\x90F\x16\x9d;[\x96\xe5\xa5\xdc\xe1\xf7&\xb7\x9d\xa5\xc0yN\xc5\xb1\x05\x7f\xb6\x13\xf9)\xcb\xcc6\x0f\x1dU\r\x1b\xad\xc5\x0c\xb8\x94<U3\xf9\xcaW\x997q\xc2\xe2\xcc\x0b!\x8bT\xf8\‘\xefL\x96\x11\xba\xf2\xdc\xbd5\xa5p\xc9\x88\x9c{\x03W\xadj)o\x1b;W*\x1bkG\x0e>\xb0\xef\xfc\x0f-\x86\xa5\xde\xb3\xc6\x8d\x83\x98*\xa2uVzU&!\xbb\x86\xe3\xd7~\x9e\x9f\xb9\x87\xd1%4\x92\xfe.4\x07\xa8\xbc[>\x92\‘\xab\x98\x052\xdb\xd4J.\xfb\xfbXO\xc1\xc4.\x04\xc9s\x0f\xc6_]\xfa\xaa\x90\xcc\x82\xbd\xa3\x9e{\x06\x80}\x1d\x99:\x9d\x84\x90\xb6tg\xd11\xcc\xb3\x01\xac\x08KQ\x00.\xe7L\xb1\x7fh\xbfNQ\xe3\xc0\xb9BWJ\x97s&i\xdb\xb4\xf23\xa1\x12\x14\x98E\x8eCU+\xee\x817^\xe7\xf4t\xd0\x8f"\xbf\xae\xa9]\r\x00m\x05O\x181:=r1\x88\xce|^J\xd8\xbd\xd4K)ae\xea\x9f\x1c\xe2\x1d\xdf\\\xd2\xe0\x8e\x01\xa9\x90\x10,p\x16\xd6\xb5\xbf\x93k\xbc\xc0\xb0\xbc\x80\x82\xad\xe3\x81\x0c6\x94^\xb4"R\x8c\x11V\xe4\t^{,Sv\xcd \xe1\xe1\xdd\xa3\x84\x99n\x0f\xd8\xd0\xac\x9d\x1c\x97W\x93[\xc7\x87\r/Y\x88\x13\x9dyH\xd6\x91\x1b\xaaV\x1a7\xaa\xff\xa7x\x91\x10#P*`o\x1c\x91\xa1\xb4\xb2\\*\xad\xad\x88\xf6R+\x88\xbb;\xc3j\xd0)J\xf8lZ\xd1Um\xaf\xee\x1e{ez\xdf\xb7\x92\x13\x9c\xab\xa7qRW\xd6E\xa0\x9efr\xff\xad\xe5\x0f[\xda\xe3D\x1fS\xa5\xf7O\xff\xf4\x12h\xae\xb7\x97)\xaa\xe0\x9c\xc6~5\xd4\xfd\xc0y\xe0T0PO\x9b6\xa3\x13\x86\xa1\xa1\‘\xfc\xa6\x1b{sF\x08\xcdt\xd4:+\xfd\xde\xf9\xbe:\xd4\x9e\xf6\xeb>\rR\xdb\x1d\xec\x9au\xe5\x7f\x0b\x05\xdbP\xf7\x01\x00\x1a\x0e<\x17\xfb\xbd\xaa<\xdc3\xd1N\xe7\xae\xbd65\xffdu+/\x1f\xef\xeb\xbe\xea\x04\xa7\x03\xab\xf7\xac\xc1\xcc\x9e\xee\xd0\nk\xba\x97\x90\xd7\xed\xd0\xae\xcf\xad\xa1]\x1f\xd4\xea\xe80\xd4\xb19Bp(\xc0\xb1\x10\xc2!H\xd8\xc2`d\x84\xb4\xc6\x96D-\xd2\xc30\xc1EQKf\[email protected]=S\xbb\xf5\x98lv\xac8\x89a\x00g\x95\x01\xe9\xa1\x11\x0fK\x00KQRT\x88\x10\x8c\xc0=\xc0\xb3\xed\xe5ri\x05\x98\x91\xd2\nyj\x03\xda\x0e\xc8,\xe11w\xad<\x8bQ\x95\xcb\x11\xea]8\xa8N\xd2\x08\xb9\xbdK\xd0k\x83\x95\xf1PY\xaelUne8\x85\xd3?B\xea\x0c\xe4\x19\xdc\r\n\xa4}\x8c\x94\xcf\xd5A\xa8\xaf\x08u\xc5\xe8\x15\x8c\xa2\x05NJ\xf8kn*OB\xc3y\x03\xfd/\x94\xcc\x1aT\x15\[email protected]\xa1N\xb2\x86\xb0 6\x9a\xed\xd9\xcc\xa8\x10\x94$\x9fs\xc9UtJ\xda\x18P\x93wK\xadzI\xd0\x8ewX\xb1\xf3&\xc5\xab\x84fqEV\xbf\x8fT\x1f\x02Bsh\xe40\xcb\xa3h\xaf\xf4\xc8\x95\xba\xa7<\x88\xa7(\x83\x94I\xa4l\x17ec\xa5}\x87B\x0fT\xec\r\xd8*\x19M\x86\xeawS\x12\xa5\x8b\x0e\‘\x0e\xa7#9\xa9nl\xed\xb9"\x14\x10\xe7x\x81\x85\x91\x92>Dw\xeaL>\xbd\xba\xb9zsu3\x99L\xae\xaf^O\xa6\xd7_L\x9f_\xbf\x9a\xbe\x80\xef\xcb\xeb7\x08\xfc\xa8\xd7\xe8\xb5F\xbb\xdeH\xd2\xb3na\xe3s\x9cU\x15w\xfb\xb6\xa4b\xad?\xa6k\xb9\x8e5\xb0\xe0\x02a\xdd\x16UDZSu\xa1\x1d\xff\x0b\xaaR\xe1\t\x1f\x0b\x00\x00‘
    file = open(r"C:\Users\wzs\Desktop\baidu",‘w‘)
    proxies={‘http‘:‘http://120.24.79.140:8118‘}
    i = 0
    j0 = 0
    j1 = 0
    proxyfiles = []
    localfiles = []
    while i < 50:
        proxyfile = urllib.urlopen("http://www.baidu.com",proxies=proxies).read()
        localfile = urllib.urlopen("http://www.baidu.com").read()
        if proxyfile==a:
            j0+=1
        else:
            proxyfiles.append(proxyfile)
        if localfile==a:
            j1+=1
        else:
            localfiles.append(localfile)
        i+=1
    file.writelines(proxyfiles)
    file.writelines("\n-------------------------------------------------------------\n")
    file.writelines(localfiles)
    file.close()
    print j0
    print j1

  3. 待续
时间: 2024-12-08 02:39:58

Http协议 压缩的相关文章

thttpd增加gzip压缩响应报文体功能,以减少传输数据量

thttpd thttpd是一个非常小巧的轻量级web server,它非常非常简单,仅仅提供了HTTP/1.1和简单的CGI支持,在其官方网站上有一个与其他web server(如Apache, Zeus等)的对比图+Benchmark,可以参考参考.此外,thttpd 也类似于lighttpd,对于并发请求不使用fork()来派生子进程处理,而是采用多路复用(Multiplex)技术来实现.因此效能很好. thttpd 支持多种平台,如FreeBSD, SunOS, Solaris, BSD

游戏协议加密及身份验证

时间如白驹过隙,一眨眼就过去了,本打算在2月份发这篇的,结果一直误以为2月有31日-- 这一块之前一直感兴趣,终于在2月份争取到机会去做这一块的工作.前辈给我留下了一个鉴权的框架: 客户端连接服务器 服务器将随机数发给客户端 客户端用客户端私钥加密,发回到服务器 服务器端用客户端公钥解开密文,比对解开的随机数是否与原来的一致 如果一致,则客户端发送随机数到服务器,服务器用服务器端私钥加密,将密文发送到客户端:同时,产生新的随机数,用于稍后对会话进行rc4加密,并将这个随机数以客户端公钥加密,发送

Tomcat启用GZIP压缩,提升web性能

一.前言 最近做了个项目,遇到这么一个问题:服务器返回给客户端的json数据量太大(大概65M),在客户端加载了1分多钟才渲染完毕,费时耗流量,用户体验极其不好.后来网上搜优化的方法,就是Http压缩. HTTP压缩可以大大提高浏览网站的速度,它的原理是,在客户端请求服务器对应资源后,从服务器端将资源文件压缩,再输出到客户端,由客户端的浏览器负责解压缩并浏览.即:通过减小HTTP响应大小来减少响应时间.相对于普通的浏览过程HTML ,CSS,Javascript , Text ,它可以节省40%

python 连接 mysql

http://blog.csdn.net/yelbosh/article/details/7498641 数据库的连接 模块引入之后我们就需要和数据库进行连接了,实例代码如下: db = MySQLdb.connect("localhost","root","123456","myciti" ) 这三个关键参数的含义一目了然:第一个为服务器的地址,第二个为用户名,第三个为dbms密码,第四个为要访问的数据库,其实该connec

RPC服务简述

RPC=remote procedure call 计算机A可以跟调用本地方法一样调用远程计算机B的方法,省略了显示编码远程调用的细节 过程:user相当于一个client,当client调用远程方法时,user-stub将接口方法参数封装起来,通过特定的协议规范打包成rpc的协议数据由C端的RPCRuntime送到S端的RPCRuntime,s端接收到后,还是按照特定的协议规范解析,然后调用本地方法,得到结果后返回给Client RPC调用: 同步调用:客户端等待调用执行完并返回结果 异步调用

好客户端是怎样炼成的

本文基于淘宝游戏的一次内部移动开发知识普及培训,主要从开发的角度讲一下一个客户端的开发主要涉及的方方面面,让想没做过App开发的后台开发.产品.设计.运营同学做个快速入门,以利于项目沟通配合. 一.开发前准备 这个主要是产品的设计阶段. 1.产品 确定产品的功能List,主要操作逻辑,产品满足的需求目标,以及过程.输出以PRD.原型图.流程图等为主. 2.画视觉稿 如,概念稿.效果图等.把产品经理的输出以二维.Flash等方式表达出来,让人对目标产品有更清晰的感受.然后按照开发的要求进行切图,把

RHEV桌面虚拟化和服务器虚拟化的比较分析

红帽企业虚拟化平台RHEV同时支持服务器虚拟化和桌面虚拟化,在实际使用中很难辨清两者之间的区别,本文试图分析二者之间的区别与联系: 共同点: 桌面虚拟化和服务器虚拟化都需要基于虚拟化技术 差异点: 1.桌面虚拟化的数据存储 桌面虚拟化基于同一个镜像,因此发布的时候只需要修改公共的镜像就能完成所有虚拟机的更新. 用户的虚拟机存储的磁盘存放着公共镜像与用户的差异数据,节省空间. 我记得rhev的桌面虚拟化可以在thin-provision的公共磁盘上以thin-provision存放用户差异数据.

前端性能的方法

减少HTTP请求 http协议是无状态的应用层协议,意味着每次http请求都需要建立通信链路.进行数据传输,而在服务器端,每个http都需要启动独立的线程去处理.这些通信和服务的开销都很昂贵,减少http请求的数目可有效提高访问性能 减少http的主要手段是合并CSS.合并JavaScript.合并图片.将浏览器一次访问需要的javascript和CSS合并成一个文件,这样浏览器就只需要一次请求.图片也可以合并,多张图片合并成一张,如果每张图片都有不同的超链接,可通过CSS偏移响应鼠标点击操作,

多数据中心的高可用结构【环状星型数据库架构】

贴一些比较老的内容,文章是新写的,技术可能都是大家熟悉的,给入门的兄弟们参考.高手轻拍原文请见:http://www.muduo.net/index.php/u ... space-itemid-318728 二.多数据中心的高可用结构[环状星型数据库架构]在介绍该结构之前,我们首先了解一下mysql复制的有关内容.在<highperformance mysql>的第一版中,作者介绍了这样的一种数据库结构:                              三个mysql的daemon