Web開發中需要了解的東西
Web開發中需要了解的東西,作為一個web開發人員,還是有些東西需要大家去了解的。
Web開發中需要了解的東西
接口和用戶體驗
1.首先,需要確保你的網站能夠兼容絕大部分的瀏覽器,最好能夠兼容下面的瀏覽器
-
最新的Gecko引擎(Firefox)
</li> -
最新的webkit引擎(chrome瀏覽器)
</li> -
IE瀏覽器(測試兼容性的時候可以使用微軟IE的 Application Compatibility VPC Images)
</li> -
opera瀏覽器
</li> </ul>2.多考慮考慮人們是怎么來訪問你的網站的而不是那些主流的瀏覽器,手機,讀屏軟件(ipad),搜索引擎
3.部署Staging:怎么部署網站的更新而不會影響用戶的訪問(版本控制,自動化build,備份,回滾)
4.千萬不要直接給用戶顯示不友好的錯誤信息
5.千萬不要把用戶的郵件 地址以明文顯示出來,這樣會被爬蟲并讓用戶的郵箱被垃圾郵件搞死。
6.為用戶的鏈接添加上rel = "nofollow"的屬性以避免垃圾網站的干擾,
ps: nofollow是html的屬性,用于通知搜索引擎:這個連接所指向的網頁非我能控制的,對其內容不予置評。
或者簡單的說,該鏈接不是對目標網站或者網頁的訪問,這樣搜索引擎就不會再訪問這個鏈接了。
7.為網站建立一些限制,這個屬于安全性的范疇了(例如 短信認證,限制次數,captcha)
8.學習如何做 Progressive Enhancement
PS:包含的內容:1.基礎的內容和功能應該可以被所有的瀏覽器存取,2.頁面布局的應該使用外鏈的css鏈接
3.javascript 也應該是外部鏈接,還應該是unobtrusive的,4.應該讓用戶設置他們的偏好
9.如果POST成功,要在POST方法后重定向網站,這樣可以阻止用戶通過刷新頁面重復提交。
10.關注Accessibility
安全
1.關注安全,OWASP(open web application security project)
2.了解什么是SQL注入攻擊,并知道如何阻止這種攻擊
3.永遠不要相信用戶的輸入(包括cookies,因為這也是用戶輸入的)
4.對用戶的口令進行hash,并使用salt,以防止rainbow攻擊
ps:Hash算法可以使用MD5或者SHA1等,
對口令使用salt:在用戶設定密碼的時候,system會產生另外一個random string (salt).在database存儲的時候是
salt+passworld產生的MD5sum以及salt,當要驗證密碼的時候就把user輸入的string加上使用者的salt,產生md5sum來比較,理論上面用salt可以大幅度的讓密碼難以破解,相同的密碼除非剛好salt相同,最后存儲在database上的內容也是不一樣的。
關于彩虹表攻擊,意思就像密碼字典表,但不同的是,rainbow表存的是已經被hash過的密碼,而且其查找密碼的速度更加的快速,這樣可以更快的攻擊了。
使用慢一點的hash算法來保存口令,例如bcrypt或者scrypt,
5.不要試圖自己去發明或者創造一個自己的fancy的認證系統。
6.了解處理信用卡的一些規則。
7.使用SSL/HTTPS 來加密傳輸登錄頁面或者是任何可能有敏感信息的頁面。
8.知道如何對付session劫持
9.避免跨腳本攻擊(XSS)
10避免跨站偽造請求攻擊(cross site request forgeries)(XSRF)
11 保持你的系統里面的所有軟件更新到最新的patch
12. 保證你的數據庫連接是安全的
13.確保你能了解最新的攻擊技術,以及你的系統的脆弱性。
性能
-
只要需要,請實現cache機制,了解并合理使用 HTTP caching 以及 HTML5 Manifest
</li> -
頁面優化-千萬不要使用20kb的圖片平鋪網頁背景。
</li> -
學習如何gzip/deflate 網頁 (deflate 更好)
</li> -
把多個css文件和javascript文件合并成為一個,這樣可以減少瀏覽器的網絡連接個數,并使用gzip壓縮反復被使用到的文件
</li> -
學習一下 Yahoo Exceptional Performance 這個網站上面的東西
</li> -
為那些小的圖片使用 css image sprites (最小化HTTP請求)
</li> -
繁忙的網絡應該考慮把網頁的內容分開存放在不同的域名下面(使用專門的圖片服務器,或者專門的ajax服務器)
</li> -
靜態頁面應該放在一個不使用cookies的獨立域名下面,因為所有在同一個域名或者子域名下面的cookies會被這個域名下面的請求一同發送,另外一個好的選擇方法就是 content delivery network
</li> -
使用單個頁面的合同談判請求數最小化
</li> -
為javascript使用 google closure compiler 或者其他壓縮工具
</li> -
確認一下你的網站的 favicon.ico 文件放在網站的根下,如./favicon.ico,瀏覽器會自動的請求這個文件。就算這個圖標文件沒有在你的網頁中明顯說明,瀏覽器也會請求的,如果你沒有這個文件,就會發生大量的404錯誤,這樣會造消耗你的服務器帶寬。
</li> </ol>SEO(搜索引擎優化)
-
使用搜索引擎最喜歡的url (例如 example.com/pages/44-article-title而不是 example.com/index.php?page=45)
</li> -
如果你的動態頁面需要使用到 # , 那么請換成 #! , 而在服務器端你需要處理¥
</li> -
別使用“click here”這樣的鏈接,這樣一來無法SEO,而且對于一些需要使用讀屏的人來說很不友好,
</li> -
做一個 XML sitemap ,并放在網站的跟下 /sitemap.xml ,這樣可以讓搜索引擎更好的了解網站圖
</li> -
當你有個多個URL指向同一個url的時候,使用 <link rel = "canonical" .../>
</li> -
使用google webmaster tools 和 yahoo site explorer
</li> -
安裝google analytics
</li> -
了解robots.txt 和搜索引擎爬蟲是如何工作的。
</li> -
重定向請求,使用(301重定向網站),如果你要把www.example.com 定向到 example.com 或者是其他的變更,這樣可以防止google的rank因為域名的改變而發生改變。
</li> -
知道并不是所有的爬蟲都是好的,也有些爬蟲的行為并不好,比如向你的網站發起大量請求會造成服務器的性能下降。
</li> </ol>技術
-
了解什么是HTTP 比如: GET, POST, sessions,cookies 了解什么是 statusless 無狀態
</li> -
讓你的XHTML/HTML 和 css 復合W3C規范,并確認他們都是合格的,我們的目標是避免瀏覽器的 quirks mode,并且可以讓其更容易地能和非標準的瀏覽器工作,比如讀屏器移動設備。
</li> -
了解瀏覽器是怎么處理javascript的,最好能夠了解為什么有些js代碼是在頁面前面,有些則是在頁面后面的
</li> -
了解瀏覽器是怎么裝載javascript,css和其他資源的,了解其對視覺上的影響。
</li> -
了解javascript的sandbox是怎么工作的,尤其當你想使用iframes的時候。
</li> -
注意javascript是可以被禁止掉的,這樣會讓你的ajax失效掉。
</li> -
學習301 和 302 轉向的區別。
</li> -
盡可能多的學習你的部署平臺,比如操作系統,web server ,apache/nginx 防火墻,數據庫,等等
</li> -
考慮使用一個 Reset style sheet
</li> -
考慮下使用javascript框架
</li> -
把視覺設計和js框架組合起來考慮,考慮使用一個service,比如Google libraries api 來轉載框架,這樣就可以讓瀏覽器可能早的把這些緩存起來,而不是從你的網站上下載。
</li> </ol>Bug fixing
-
要明白你會花20%的時間寫代碼,而80%的時間維護,所以小心你的編碼
</li> -
設計一個好的錯誤報告機制
</li> -
設計一個入口可以讓人們聯系到你并給你建議和批評
</li> -
為你開發出來的系統形成文檔,這樣可以讓后來的人容易維護你的軟件和系統。
</li> -
頻繁備份
</li> -
使用一個版本控制系統來保存你的代碼 例如 svn 或者 git
</li> -
確保足夠的日志,方便你快速的定位問題
</li> -
當你寫日志的時候,確保你記錄的日志捕獲了你的處理和處理異常,報告和分析日志可以讓知道你的網站的問題。
</li> </ol> 原文地址:http://coolshell.cn/articles/6043.html
-
-
-
-