從去年年末開始專門被分配到互聯網小組作項目,一直想作個總結,可是苦於太貪玩。好吧,藉着小組技術交流來一發。這裏只對本身新學習的技術或者一些小技巧作簡要概述,不作深究。css
1.互聯網項目和普通內網項目有什麼區別?html
1.1更加註重體驗nginx
1.2更加註重性能ajax
1.3安全性(不能相信用戶)redis
2.有關互聯網的小知識spring
2.1具體案例: 在咱們微信版上線前,咱們獲得了一個結論,那就是咱們的微信頁面訪問速度很慢,那麼針對這個問題該如何進行優化呢?chrome
服務器的配置:帶寬1m,cpu1ghz,內存1g數據庫
2.1.1直接了當增長帶寬(增到4M)瀏覽器
2.1.2壓縮js、css儘可能合併成一個減小瀏覽器鏈接數(節省帶寬)緩存
2.1.3對一些工具類採用外部的cdn加速(至關於向別的地方加載數據,使用別人的帶寬)
2.1.4頁面加載慢最大緣由是在圖片,因此咱們能夠把圖片也作cdn加速(咱們這裏採用的是七牛)
2.1.5使用nginx將頁面靜態化
2.2防止xss跨站腳本攻擊
2.2.1什麼是xss攻擊?
小例子:http://www.cnblogs.com/dolphinX/p/3391351.html
2.2.2錄入時使用dto進行校驗
controller先接收ProjectBase對象,添加@Valid標籤
dto對象,添加自定義註解@XssValid(主要功能就檢查是否有腳本注入)
校驗結果會反饋給BindingResult對象, 配置aop獲取校驗結果
校驗出錯則拋出異常
2.2.3輸出時使用${fn:escapeXml(userInput)} ,將特殊字符轉化爲字符串
2.3簡單的seo優化
代碼精簡、網頁靜態化(不能全都ajax)、網站內容連接、網站結構(div+css)、網站頭部標籤優化(標題,關鍵字)
2.4標籤加上
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">使用最高版本的ie內核 2.5獲取數據用get(效率高),提交數據用post(傳輸量大,更安全)
2.5.1多數瀏覽器對於POST採用兩階段發送數據的,先發送請求頭,再發送請求體,即便參數再少再短,也會被分紅兩個步驟
來發送(相對於GET),也就是第一步發送header數據,第二步再發送body部分。HTTP是應用層的協議,而在傳輸層有些
狀況TCP會出現兩次連結的過程,HTTP協議自己不保存狀態信息,一次請求一次響應。對於TCP而言,通訊次數越多反而
靠性越低,能在一次連結中傳輸完須要的消息是最可靠的,儘可能使用GET請求來減小網絡耗時。若是通訊時間增長,這段時
間客戶端與服務器端一直保持鏈接狀態,在服務器側負載可能會增長,可靠性會降低。
2.5.2 GET請求可以被cache,GET請求可以被保存在瀏覽器的瀏覽歷史裏面(密碼等重要數據GET提交,別人查看歷史記錄,
就能夠直接看到這些私密數據)POST不進行緩存。
2.5.3 GET參數是帶在URL後面,傳統IE中URL的最大可用長度爲2048字符,其餘瀏覽器對URL長度限制實現上有所不一樣。
POST請求無長度限制(目前理論上是這樣的)。
2.5.4 GET提交的數據大小,不一樣瀏覽器的限制不一樣,通常在2k-8K之間,POST提交數據比較大,大小靠服務器的設定值限制。
2.5.5 所有用POST不是十分合理,最好先把請求按功能和場景分下類,對數據請求頻繁,數據不敏感且數據量在普通瀏覽器最
小限定的2k範圍內,這樣的狀況使用GET。其餘地方使用POST。
3.redis的嘗試
3.1 redis是什麼呢?
簡介: Redis是一個開源的使用ANSI C語言編寫、支持網絡、可基於內存亦可持久化的 日誌型、Key-Value數據庫,並提供多種語言的API。SET操做每秒鐘 110000 次,GET操做每秒鐘 81000 次。
3.2 怎麼用?
強大的spring已經對redis進行了整合。
1.作緩存。
2.管理session。
具體能夠看看http://www.tuicool.com/articles/7Bni6f
經常使用命令可參考:http://hello-nick-xu.iteye.com/blog/2076031