1. 你能描述一下漸進增強和優雅降級之間的不同嗎? 2. 請說說瀏覽器內核的組成? 3. 為什麼利用多個功能變數名稱來請求網路資源會更有效? 4. 說說前端開發中, 如何進行性能優化? 5. 從前端角度出發, 談談做好網站seo需要考慮什麼? ...
1. 你能描述一下漸進增強和優雅降級之間的不同嗎?
定義: 優雅降級(graceful degradation): 一開始就構建站點的完整功能, 然後針對瀏覽器測試和修複 漸進增強(progressive enhancement): 一開始只構建站點的最少特性, 然後不斷針對各瀏覽器追加功能。 優雅降級和漸進增強都關註於同一網站 在不同設備里不同瀏覽器下的表現程度。 區別: “優雅降級”觀點認為應該針對那些最高級、 最完善的瀏覽器來設計網站。 而將那些被認為“過時”或有功能缺失的瀏覽器下 的測試工作安排在開發周期的最後階段,並把測試 對象限定為主流瀏覽器(如 IE、Mozilla 等)的 前一個版本。 “漸進增強”觀點則認為應關註於內容本身。 總結: "優雅降級"就是首先完整地實現整個網站, 包括其中的功能和效果. 然後再為那些無 法支持所有功能的瀏覽器增加候選方案, 使之在舊式瀏覽器上以某種形式降級體驗 卻不至於完全失效。 "漸進增強"則是從瀏覽器支持的基本功能開始, 首先為所有設備準備好清晰且語義化的html及 完整內容, 然後再以無侵入的方法向頁面增加無 害於基礎瀏覽器的額外樣式和功能。 當瀏覽器升級時, 它們會自動呈現併發揮作用。
2. 請說說瀏覽器內核的組成?
瀏覽器的結構: 用戶界面(UI) - 包括菜單欄、工具欄、地址欄、 後退/前進按鈕、書簽目錄等,也就是能看到的除 了顯示頁面的主視窗之外的部分; 瀏覽器引擎(Rendering engine)-也被稱為瀏覽器 內核、渲染引擎,主要負責取得頁面內容、整理信息 (應用CSS)、計算頁面的顯示方式,然後會輸出到 顯示器或者印表機; JS解釋器 - 也可以稱為JS內核,主要負責處理 javascript腳本程式,一般都會附帶在瀏覽器 之中,例如chrome的V8引擎; 網路部分 - 主要用於網路調用,例如:HTTP請求, 其介面與平臺無關,併為所有的平臺提供底層實現; UI後端 - 用於繪製基本的視窗部件,比如組合框和視窗等。 數據存儲 - 保存類似於cookie、storage等數據部分, HTML5新增了web database技術,一種完整的輕量級客 戶端存儲技術。 主要瀏覽器: IE、Firefox、Safari、Chrome、Opera。 它們的瀏覽器內核(渲染引擎): IE--Trident FF(Mozilla)--Gecko Safari--Webkit Chrome--Blink(WebKit的分支) Opera--原為Presto,現為Blink
3. 為什麼利用多個功能變數名稱來請求網路資源會更有效?
動靜分離需求,使用不同的伺服器處理請求。
處理動態內容的只處理動態內容,不處理別的,
提高效率。
突破瀏覽器併發限制, 同一時間針對同一功能變數名稱
下的請求有一定數量限制。超過限制數目的請
求會被阻止。不同瀏覽器這個限制的數目不一樣。
Cookieless, 節省帶寬,尤其是上行帶寬一般比下
行要慢。用戶的每次訪問,都會帶上自己的cookie
,久而久之耗費的帶寬還是挺大的。
假如weibo 的圖片放在主站功能變數名稱下,那麼用戶
每次訪問圖片時,request header 里就會帶有
自己的cookie ,header 里的cookie 還不能壓縮,
而圖片是不需要知道用戶的cookie 的,所以這部分帶
寬就白白浪費了。
避免不必要的安全問題(比如: 上傳js竊取主站cookie之類的)
節約主功能變數名稱的連接數,從而提高客戶端網路帶寬的利用率,
優化頁面響應。
4. 說說前端開發中, 如何進行性能優化?
1) 減少http請求次數:css spirit,data uri; 2) JS,CSS源碼壓縮; 3) 前端模板 JS+數據,減少由於HTML標簽導致 的帶寬浪費,前端用變數保存AJAX請求結果,每 次操作本地變數,不用請求,減少請求次數; 4) 用innerHTML代替DOM操作,減少DOM操作次數; 5) 用setTimeout來避免頁面失去響應; 6) 用hash-table來優化查找; 7) 當需要設置的樣式很多時設置className而不 是直接操作style; 8) 少用全局變數; 9) 緩存DOM節點查找的結果; 10) 避免使用CSS Expression; 11) 圖片預載; 12) 避免在頁面的主體佈局中使用table, table要等其中的內容完全下載之後才會顯示出來, 顯示比div+css佈局慢; 13) 控制網頁在網路傳輸過程中的數據量; 比如: 啟用GZIP壓縮或者保持良好的編程習慣, 避免重覆的CSS,JavaScript代碼, 多餘的HTML標簽和屬性。
5. 從前端角度出發, 談談做好網站seo需要考慮什麼?
1) 語義化html標簽; 2) 合理的title, description, keywords; 3) 重要的html代碼放前面; 4) 少用iframe, 搜索引擎不會抓取iframe中的內容 5) 圖片加上alt