< high performance web sites > 閱讀小記

high performance web sitesjavascript

1,減小HTTP請求數
    (1)圖片加載使用image maps 或者 CSS Sprite
    (2)使用非http協議,如(ftp:, file: mailto: data:URL等,已被IE廢棄)
    (3)合併css和js代碼文件
    
2,使用內容分發網絡(CDN:content delivery network)
    固然使用cdn有優勢也有缺點:成本高,不受控制,和其餘客戶競爭cdn帶寬
    
3,增長expires頭,控制緩存時間
    (1)設置expires頭,不易操做,須要設置精確過時時間,client和server須要同步時間等
    (2)http 1.1引進Cache-controll:max-age
    (3)主要針對image/stylesheet/script等類型文件
    (4)更改文件名可「刷新」緩存,如添加js版本號
    
4,使用Gzip
    (1)Accept-Encoding: gzip, deflate
    (2)通常可壓縮大於1~2K的文本文件(html/css/js/xml/json等)
    
5,把stylesheets放在前面
    (1)有些瀏覽器可能會在讀完stylesheet後再渲染,因此影響用戶體驗
    (2)多用link標籤,少用@import
    
6,把scripts放在後面
    (1)腳本執行佔用時間,致使頁面加載緩慢
    (2)加快stylesheet渲染頁面
    (3)使用多個子域名或者cdn,增長瀏覽器併發下載數目,但script只能單獨下載,沒法並行
    
7,減小css的運算表達式
    
8,把javascript和css放在外部文件
    (1)css和js能輕易被瀏覽器緩存
    (2)資源複用等

9,減小dns查詢
    (1)dns查詢結果包含ttl值,表示保持時間,瀏覽器有記錄緩存
    
10,減少javascript代碼
    壓縮,混淆,刪掉無用代碼片斷,可用JSMin工具或Dojo Compressor
    
11,減小3xx跳轉(服務器端用alias等方式替代)
    
12,防止script被屢次引用
    
13,設置ETag
    服務器 -> 瀏覽器 ETag: "10c24bc-4ab-457e1c1f"
    瀏覽器 -> 服務器 If-None-Match: "10c24bc-4ab-457e1c1f"
    
14,使Ajax可緩存,優化ajax

附:關於網站建設整理:(各個組件的一些解決方案)css

1,原型設計Axure
2,後端MVC框架(codeigniter/yii/ruby on rails等)
3,前端框架bootstrap(css),jquery(javascript),yaml(css)等
4,持久化數據庫(mysql數據表設計,讀寫分離,合適存儲引擎,慢查詢日誌,數據庫鏈接池,索引,經過業務實現分表分庫);緩存數據庫(redis/mongodb等)
5,緩存方案(數據緩存memcache/redis,文件緩存squid/varnish)
6,消息隊列(redis/zeromq/httpsqs等),任務調度(zeromq/gearman等)
7,文件存儲(磁盤大文件存儲+mongodb小文件存儲)
8,搜索引擎(lucene/nutch/elasticsearch等)
9,SEO優化(添加ga統計代碼等)
10,虛擬化(xen或lxc或kvm)
11,日誌處理:分佈式日誌蒐集(facebook的scribe)日誌統計處理(awk/hadoop/elasticsearch/storm)
12,監控(glances,nagios,zabbix,查看網絡IO,磁盤IO,cpu,磁盤剩餘,內存佔用等參數)
13,負載均衡(F5/lvs/nginx/Haproxy熱備)
14,裝機策略(系統盤和重要的數據盤作raid10),操做系統centos
15,網絡安全(程序以nobody權限運行,禁止root帳戶操做現網,防ddos攻擊,防xss注入攻擊,及時更新各個軟件,改變ssh等經常使用軟件的端口)
相關文章
相關標籤/搜索