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