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等經常使用軟件的端口)