網站優化:
是由於IIS的鏈接數的是有限的,因此
一、減小HTTP鏈接
1 儘可能將同一個邏輯的css代碼放到一個css文件中
2 儘可能將同一個邏輯的js代碼放到一個js文件中
3 儘可能將小圖片合併成一個大圖,利用css中的backgroud-postinion : x,y去截取大圖上的具體的小圖 (優化之後性能是最好)
如何將小圖拼成大圖:
http://www.cnblogs.com/ivanyb/archive/2013/01/10/2854366.html 中有一個工具
只須要將小圖片打包成.zip 上傳到服務器,自動的生成大圖,而且生成大圖中的每一個小圖的css代碼
4 使用 CDN 加速將靜態資源全局緩存到CDN服務商的服務器上,未來瀏覽器請求一個靜態資源(圖片,.css,.js,.html,.htm),則直接去CDN的服務器獲取而不去
web服務器了
CDN的使用:
一、去CDN服務商購買服務
二、CDN就會將服務器上的指定的靜態資源下載回去,同時設定緩存時間
三、當緩存失效之後,從新回源
四、也能夠提供url進行手工刪除
五、CName:給某個域名作一個別名
A記錄:將域名www.xx.com綁定到外網ip上 212.198.9.2
cname:將當前域名 s1.xx.cdndomain.com cname到www.xx.com
二、減小每次http請求響應回去的數據量大小
一、儘可能壓縮js,css文件的大小 ,因此通常使用的是 .min.js .min.css
可使用
http://www.cnblogs.com/ivanyb/archive/2013/01/10/2854366.html中的說明一步步操做便可完成
二、開啓IIS中的壓縮功能,默認是zip壓縮,瀏覽器獲得之後自動解壓縮
上面的2個優化過程不須要修改任何代碼。css
三、頁面緩存
在aspx頁面上 <@ outputcache %>
四、數據緩存
將不常變化的數據緩存到服務器
失效策略:
一、相對過時時間
二、絕對過時時間
三、文件依賴
四、數據庫依賴
asp.net中HttpRuntime.cache緩存,此緩存爲當前網站的進程內部的
第三方緩存軟件:memcached ,redis
本質上是利用key-value進行數據存儲的,可使用當前服務器上的全部內存
他們支持分佈式緩存 html
五、頁面真靜態化 .html 能夠作CDN緩存
要求:當前頁面的變化不大web
六、開啓IIS的處理進程 web園
web園:一個網站的應用程序池的工做進程數>1
開啓web園引起的問題:
一、多個進程不能共享session對象
如何解決:
一、利用進程外,
一、狀態服務器,本質上是是window服務,使用的內存更大,可是當超過了內存數的時候同樣的重啓,致使不穩定,讀寫速度很快
二、數據庫:本質上是將session數據存儲在硬盤上,讀寫速度慢,可是很穩定(通常使用此種訪問,由於系統的健壯性比效率更加劇要)
二、利用cookie + redis(memcached)來模擬session的功能
二、若是系統使用的是HttpRunTime.cache(進程內的緩存) 會引起內存不夠用的問題,以及在多個進程中不能共享緩存數據
如何解決:使用 redis(memcached) 在單獨的緩存服務器上運行
七、增長web服務器
必須使用LINUX+ NGINX 進行負載均衡
引起什麼問題?
一、多個進程不能共享session對象
二、若是系統使用的是HttpRunTime.cache(進程內的緩存) 會引起內存不夠用的問題,以及在多個進程中不能共享緩存數據
三、文件上傳之後不能在各個服務器上共享
解決方案:使用文件服務器來共享
如何從web服務器將文件保存到文件服務器磁盤:
通常使用FTP ,能夠知足大文件的穩定傳輸
也可使用System.Net.WebClient中的Update() 有參數 (缺點不穩定,隨時都會斷開)
第一個:路徑 (能夠是文件服務器的共享路徑 格式:\\文件服務器名稱\存儲文件的文件夾名稱)
第二個:保存的數據
斷點續傳
1K ->Byte[]
斷點下載
redis
八、優化數據庫
加索引
分表
分庫
讀寫分離
Nosql:Mongodbsql