前端緩存框架
A. 想要一個B/S架構,有開發平台的ERP,幫忙推薦下~~
B/S架構也可以理解為Web架構,是一種基於瀏覽器載體的框架,包含前端、後端和資料庫三個大的方向,各個方向的技術都不一樣。現在主流的技術包含.NET、sqlServer、Bootstrap等,學會了這些也就知道怎麼去開發B/S項目了。
ERP的B/S開發平台一般都會包括前端、後端和資料庫三個大的方向,當然還有緩存機制,也會集許可權管理、快速開發、動態介面、通用組件和動態UI於一體的ERP開發平台。如果推薦可以了解下B/S開發平台的的一些架構思想,對我們應該是有好的幫助的。
B/S架構前端開發技術包括三個要素:HTML、CSS和javaScript,還有很多高級的前端框架,比如bootstrap、Jquery等,前端開發也是比較的復雜,如果找到規律,開發起來也比較的快。
B/S架構後端技術也有很多,比如.Net、JAVA、php等,各大語言都有其開發架構,像.NET的MVC架構,JAVA的Java EE,一般web後端技術的知識面是很廣的,語言、設計模式、需求分析、性能優化等都要懂。
資料庫現在有三種主流的關系型資料庫:MysqlSQLserverOracle,還有Nosql等結構性資料庫:Redis、Mogodb等。
B. 前端有什麼路由框架,帶緩存的
所說數據指面數據頁面內容、頁面瀏覽、頁面輸入框輸入些數據等等類型些數據都必要存或者說存整體運行造必要困擾 說實輕量級框架般都難保存些東西包括重量級少我通做自定義全局變數用於存儲些東西比service等頁面銷毀前數據存進並設置存儲間量或者數據量及銷毀用需要用候調用全局變數實現數據本重新加
C. 前端框架Bootstrap的Modal使用Ajax數據源,如何避免數據被緩存
沒用過這個前端框架,但是一般ajax都能設置重新獲取還是從緩存獲取,例如jQuery的ajax提供了cache參數,如jQuery.ajax({cache:false}),另外,一般的,採用post方式獲取數據ajax也都不會獲取緩存。
如果以上不行,你就自己在url後面加參數吧,例如url+='?'+(new Date()).valueOf();因為時間戳不一樣,瀏覽器就會認為是新地址,不會從緩存中讀取了
D. 前端開發框架是什麼
常見的web前端開發框架如下:
1、Bootstrap:
主流框架之一,Bootstrap 是基於 HTML、CSS、JavaScript的,它簡潔靈活,使得 Web 開發更加快捷。
2、html5-boilerplate:
該框架可以快速構建健壯,且適應力強的web app或網站。
3、Meteor:
Meteor是新一代的開發即時web應用的開源框架,它能在較短時間內完成開發。
4、Materialize:
基於材料設計的現代化響應式前端框架。可提供默認的樣式,自定義組件。此外,Materialize還改進動畫和過渡,為開發人員提供流暢的體驗。
5、Amaze UI:
首個開源HTML5跨屏前端框架產品系列,中文排版前端的學習都是需要不斷的學習,學一天停一停相當於白學,學習效果很差,如果你想有人一起學習可以來這個扣裙,首先是132 中間是667最後是127 都是零基礎的同學,大家相互鼓勵 共同努力 只是學著玩就不建議來了!!!支持更優、本土化組件豐富。該產品系列中有專門針對移動端的HTML5混合應用開發框架Amaze UI Touch以及針對跨屏HTML5網頁開發的Amaze UI Web。
(4)前端緩存框架擴展閱讀:
web框架程序的作用:
Web框架使得在進行Web應用開發的時候,減少了工作量。Web框架主要用於動態網路開發,動態網路主要是指現在的主要的頁面,可以實現數據的交互和業務功能的完善。
使用Web框架進行Web開發的時候,在進行數據緩存、資料庫訪問、數據安全校驗等方面,不需要自己再重新實現,而是將業務邏輯相關的代碼寫入框架就可以。也就是說,通過對Web框架進行主觀上的「縫縫補補」,就可以實現自己進行Web開發的需求了。
以PHP為例,PHP可以在apache伺服器上進行Web開發,而不必使用框架。使用PHP進行開的時候,在不適用框架的情況下,資料庫連接就需要自己來實現,頁面的生成和顯示也是一樣。比如框架的話可以完成避免sql注入的工作,而使用PHP在不用框架的情況下,這部分要自己做。
E. ...可視化的web前端開發採用什麼樣的架構比較合適
web前端分為網頁設計師、網頁美工、web前端開發工程師
首先網頁設計師是對網頁的架構、色彩以及網站的整體頁面代碼負責
網頁美工只針對UI這塊兒的東西,比如網站是否做的漂亮
web前端開發工程師是負責交互設計的,需要和程序猿進行交互設計的配合。
web前端需要掌握的有腳本技術javascript DIV+CSS現下最流行的頁面搭建技術,ajax和jquery以及簡單的後端程序等。 後端的話可供開發的語言有 asp、php、jsp、.NET 這些後端開發語言的話搭建環境都不一樣,具體如果你想學的話看是想從事前端部分還是後端程序部分。後端開發如果有一定的條件的話可以轉為軟體開發。不過要有一定的語言基礎,類似java語言。C#等。關鍵是看你的興趣愛好。。
這個到後期不會區分這么細,做前端到後期也會懂一些後端的技術,反之,後端也是。
在我們實際的開發過程中,我們當前這樣定位前端、後端開發人員。
1)前端開發人員:精通JS,能熟練應用JQuery,懂CSS,能熟練運用這些知識,進行交互效果的開發。
2)後端開發人員:會寫Java代碼,會寫SQL語句,能做簡單的資料庫設計,會Spring和iBatis,懂一些設計模式等。
現在來看,我們對前後端的要求還是蠻低的,尤其是後端,新員工經過培訓之後都是可以參與到後端開發的,沒有太高的技術門檻,唯一需要做的就是先變成熟練工種,這個階段沒有涉及到設計模式、架構、效率等一些列問題。
還是先google一下,看看網上對Web前端開發、Web後端開發分別是什麼?
Web前端: 顧名思義是來做Web的前端的。我們這里所說的前端泛指Web前端,也就是在Web應用中用戶可以看得見碰得著的東西。包括Web頁面的結構、Web的外觀視覺表現以及Web層面的交互實現。
Web後端:後端更多的是與資料庫進行交互以處理相應的業務邏輯。需要考慮的是如何實現功能、數據的存取、平台的穩定性與性能等。
我們再來看看大公司對前後端人員招聘的要求,通過這個角度看看前端、後端的技術要求:
Web前端:
1)精通HTML,能夠書寫語義合理,結構清晰,易維護的HTML結構。
2)精通CSS,能夠還原視覺設計,並兼容業界承認的主流瀏覽器。
3)熟悉JavaScript,了解ECMAScript基礎內容,掌握1~2種js框架,如JQuery
4)對常見的瀏覽器兼容問題有清晰的理解,並有可靠的解決方案。
5)對性能有一定的要求,了解yahoo的性能優化建議,並可以在項目中有效實施。
6)......
Web後端:
1)精通jsp,servlet,java bean,JMS,EJB,Jdbc,Flex開發,或者對相關的工具、類庫以及框架非常熟悉,如Velocity,Spring,Hibernate,iBatis,OSGI等,對Web開發的模式有較深的理解
2)練使用oracle、sqlserver、mysql等常用的資料庫系統,對資料庫有較強的設計能力
3)熟悉maven項目配置管理工具,熟悉tomcat、jboss等應用伺服器,同時對在高並發處理情況下的負載調優有相關經驗者優先考慮
4)精通面向對象分析和設計技術,包括設計模式、UML建模等
5)熟悉網路編程,具有設計和開發對外API介面經驗和能力,同時具備跨平台的API規范設計以及API高效調用設計能力
6)......
從幾個公司的招聘要求可以看到,做Web開發,對前端和後端的要求是各自所不同的。而我們目前的實際情況,也和這個差不多,但是,我們無論在知識的掌握程度上,還是知識掌握的寬度上,都是不夠的。
首先,我們在前端缺乏積累,沒有沉澱,專業的前端技術的積累是從去年才開始的,同時,在前端也缺乏支撐與高手,所以,走起來比較困難。同時,前端人員培養的較少,一個原因是對前端了解太少,另外一個原因就是對前端與後端的工作比例估計不足。所幸,我們在這一年也在前端有了很快的進步,培養了幾個優秀的開發人員,有意識的解決了前端的用戶體驗,這都是可喜的。今年,需要更進一步,專業化。
其次,我們在後端發展的不夠寬,後端的知識體系已經比較完善,但是,很多應用點都沒有涉及到。同時,對現有技術框架的理解都不夠深入,太浮躁。我們目前的設計團隊在解決互聯網高並發、大數據量的存取上經驗與能力都還不足,需要正視這些問題。後端技術的發展需要更加的精進,以解決實際存在的問題為主。
最後,我們在前端、後端都缺乏熟練工,這會影響到開發的速度,同時,也不利於後期技術的研究。
F. web前端開發需要用到哪些知識
應該熟練掌握的基礎技能:
HTML4,HTML5語法、標簽、語義
CSS2.1,CSS3規范,與HTML結合實現各種布局、效果
Ecma-262定義的javascript的語言核心,原生客戶端javascript,DOM操作,HTML5新增功能
一個成熟的客戶端javascript庫,推薦jquery
一門伺服器端語言:如果有伺服器端開發經驗,使用已經會的語言即可,如果沒有伺服器端開發經驗,熟悉Java可以選擇Servlet,不熟悉的可以選PHP,能實現簡單登陸注冊功能就足夠支持前端開發了,後續可能需要繼續學習,最基本要求是實現簡單的功能模擬,
HTTP
文本編輯器:推薦Sublime Text,支持各種插件、主題、設置,使用方便
瀏覽器:推薦Google Chrome,更新快,對前端各種標准提供了非常好的支持
調試工具:推薦Chrome自帶的Chrome develop tools,可以輕松查看DOM結構、樣式,通過控制台輸出調試信息,調試javascript,查看網路等
輔助工具:PhotoShop編輯圖片、取色,fireworks量尺寸,AlloyDesigner對比尺寸,以及前面的到的Chrome develop tools,
FQ工具:lantern, 壁虎漫步
入門階段反復閱讀經典書籍的中文版,書籍中的每一個例子都動手實現並在瀏覽器中查看效果
在具備一定基礎之後可以上網搜各種教程、demo,了解各種功能的實際用法和常見功能的實現方法
閱讀HTML,CSS,Javascript標准全面完善知識點
閱讀前端牛人的博客、文章提升對知識的理解
善用搜索引擎
熟記前面知識點部分的重要概念,結合學習經歷得到自己的理解
熟悉常見功能的實現方法,如常見CSS布局,Tab控制項等。
HTML先看《HTML & CSS: Design and Build Websites》1-9章,然後《HTML5: The Missing Manual》1-4章。
CSS先看《CSS: The Missing Manual》,然後《CSS權威指南》
javascript先看《javascript高級程序設計》,然後《javascript權威指南》
HTTP看HTTP權威指南
在整個學習過程中HTML CSS JavaScript會有很多地方需要互相結合,實際工作中也是這樣,一個簡單的功能模塊都需要三者結合才能實現。
動手是學習的重要組成部分,書籍重點講解知識點,例子可能不是很充足,這就需要利用搜索引擎尋找一些簡單教程,照著教程實現功能。以下是一些比較好的教程網址
可以搜索各大公司前端校招筆試面試題作為練習題或者他人總結的前端面試題還有個人總結的面試題(帶參考答案)
http://code.tutsplus.com有各種各樣的教程
MDN也有很多教程,更重要的是裡面有詳細的文檔,需要查找某個功能時在Google搜索:xxx site:https://developer.mozilla.org
http://www.html5rocks.com/zh/也有很多優質教程
http://www.sitepoint.com/
http://alistapart.com/
原生javascript是需要重點掌握的技能,在掌握原生javascript的基礎上推薦熟練掌握jQuery,在實際工作中用處很大,這方面的書籍有《Learning jQuery》或者去jQuery官網
建一個https://github.com/賬號,保存平時學習中的各種代碼和項目。
有了一定基礎之後可以搭建一個個人博客,記錄學習過程中遇到的問題和解決方法,方便自己查閱也為其他人提供了幫助。也可以去http://www.cnblogs.com/或者http://www.csdn.net/這樣的網站注冊賬號,方便實用
經常實用Google搜索英文資料應該經常找到來自http://stackoverflow.com/的高質量答案,與到問題可以直接在這里搜索,如果有精力,注冊一個賬號為別人解答問題也能極大提高個人能力。
經典書籍熟讀之後,可以打開前面必備基礎技能部分的鏈接。認真讀對應標准,全面掌握知識
Grunt:前端自動化工具,提高工作效率
less css:優秀的CSS預處理器
bootstrap:優秀的CSS框架,對沒有設計師的團隊很不錯,與less結合使用效果完美
requirejs:AMD規范的模塊載入器,前端模塊化趨勢的必備工具
Node.js:JavaScript也可以做後台,前端工程師地位更上一步
AngularJS:做Single Page Application的好工具
移動端web開發:智能手機的普及讓移動端的流量正在逐步趕超PC端
Javascript內存管理:SPA長期運行需要注意內存泄露的問題
High Performance JavaScript(Build Faster Web Application Interfaces)
Best Practices for Speeding Up Your Web Site:重要技能
chrome dev tools:前端開發調試利器,著重注意幾個功能:
liveload: 修改頁面後自動刷新,不用按F5
dimensions:直接在頁面上測量的利器
livestyle:css樣式修改後自動起效果,不需要刷新,elements修改後也能同步到代碼中
image tool:測量,取色
UC二維碼:移動端調試掃碼必備
pagespeed,YSlow:頁面性能分析和優化插件
馬克飛象:優秀的在線markdown編輯器,快速寫周報,做記錄
watch expression:通過表達式查看當前內存中的值
call stack:查看調用棧,開啟async,可以看非同步調用棧(這個非常有用,尤其是ajax調試的時候)
scope variables:作用域鏈上的變數,非常有用
console(廢話)
elements:元素樣式調整,很常用
sources:代碼中添加斷點,單步調試,以及單步調試過程中查看內存中的對象
network:抓包查看每個請求,非常重要,前後端聯調必備
timeline:分析渲染、js執行等等各個階段,性能優化利器
emulation:模擬移動端環境,mobile頁面開發必備
一些插件:
sublime text2:編碼方便,插件多,速度快,性能好
emmet:提升html編碼速度必備
sublimelinter + 各種語言的lint和hint:代碼糾錯
一些snippets:自動補全,提升開發效率
Intellij IDEA和WebStorm:集成開發環境,集成了各種功能,開發比sublime要方便,但會比較吃性能
Mark Men:測量、取色、標注利器,拿到視覺稿之後第一個打開的軟體
GFW Fucker:我用紅杏,可以的話買個虛擬伺服器當梯子
iHosts:非常優秀的hosts管理軟體,輕松修改hosts,開發調試必備
Charles:Mac 平台最好用的抓包分析工具
Rythem:AlloyTeam出品的代理抓包軟體,非常輕量,安裝簡單,移動端(真機)開發調試很好用
Wunderlist:一個非常不錯的Todo List,任務、需求多的時候管理起來很方便
作用域鏈、閉包、運行時上下文、this
原型鏈、繼承
NodeJS基礎和常用API
選擇器
瀏覽器兼容性及常見的hack處理
CSS布局的方式和原理(盒子模型、BFC、IFC等等)
CSS 3,如animation、gradient、等等
語義化標簽
非同步控制(Promise、ES6 generator、Async)
模塊化的開發方式(AMD、CMD、KMD等等)
JavaScript解釋器的一些相關知識
非同步IO實現
垃圾回收
事件隊列
常用框架使用及其原理
jQuery:基於選擇器的框架,但個人認為不能叫框架,應該算工具庫,因為不具備模塊載入機制,其中源碼很適合閱讀鑽研
AngularJS/Avalon等MVVM框架:著重理解MVVM模式本身的理念和雙向綁定的實現,如何解耦
underscore:優秀的工具庫,方便的理解常用工具代碼片段的實現
polymer/React: 組件化開發,面向未來,理解組件化開發的原理
DOM樹、CSSOM樹、渲染樹的構建流程及頁面渲染的過程
解析HTML、CSS、JavaScript時造成的阻塞
HTML5相關
SVG及矢量圖原理
Canvas開發及動畫原理(幀動畫)
Video和Audio
flex box布局方式
icon fonts的使用
koa
express
underscore
async
gulp
grunt
connect
request
響應式Web
優雅降級、漸進增強
dont make me think
網頁可用性、可訪問性、其中的意義
SEO搜索引擎優化,了解搜索引擎的原理
SPA的好處和問題
減少請求數量(sprite、combo)
善用緩存(application cache、http緩存、CDN、localstorage、sessionstorage,備忘錄模式)
減少選擇器消耗(從右到左),減少DOM操作(DOM和JavaScript解釋器的分離)
CSS的迴流與重繪
生態系統
npm
bower
spm
搭建一個屬於自己的博客
git pages
hexo
jekyll
Web Componets:面向未來的組件化開發方式
HTML模板
Shadow DOM
Custom Elements
HTML Import
移動端Native開發:這也是需要了解的,以後前端工程師會經常地和webview打交道,也要了解native開發
在掌握以上基礎技能之後,工作中遇到需要的技術也能快速學習。
基本開發工具
恰當的工具能有效提高學習效率,將重點放在知識本身,在出現問題時能快速定位並
解決問題,以下是個人覺得必備的前端開發工具:
學習方法和學習目標
方法:
目標:
入門之路
以下是入門階段不錯的書籍和資料
繼續提高
有了前面的基礎之後,前端基本算是入門了,這時候可能每個人心中都有了一些學習方向,如果還是沒有。
可以參考前面必備技能部分提到的那兩個項目,從裡面選一些進行發展學習。以下是一些不錯的方面:
####工具
####技能
前端的技能其實除了JavaScript(包括NodeJS)、HTML、CSS以外,還有很多。其實前端的技能樹很大,這里只能列一些我開發中見到的說一說
#####語言基礎
JavaScript:
CSS:
HTML:
#####進階
JavaScript:
CSS和HTML:主要是CSS3的特性和HTML5的特性,以及瀏覽器處理的流程和繪制原理
常用NodeJs的package:
一些理念:
性能優化:
#####未來
G. 前端模板引擎與各種流行框架之間有什麼區別
我覺得現在的前端模塊已情已流行的框架之間還是有一定的聯系的不過現在框架這種東西因為比較好用吧可以套用所以還是流行框架簡單點
H. cpu主頻,前端匯流排頻率,緩存,架構對cpu性能分別有什麼影響
在電子技術中,脈沖信號是一個按一定電壓幅度,一定時間間隔連續發出的脈沖信號。脈沖信號之間的時間間隔稱為周期;而將在單位時間(如1秒)內所產生的脈沖個數稱為頻率。頻率是描述周期性循環信號(包括脈沖信號)在單位時間內所出現的脈沖數量多少的計量名稱;頻率的標准計量單位是Hz(赫)。電腦中的系統時鍾就是一個典型的頻率相當精確和穩定的脈沖信號發生器。頻率在數學表達式中用「f」表示,其相應的單位有:Hz(赫)、kHz(千赫)、MHz(兆赫)、GHz(吉赫)。其中1GHz=1000MHz,1MHz=1000kHz,1kHz=1000Hz。計算脈沖信號周期的時間單位及相應的換算關系是:s(秒)、ms(毫秒)、μs(微秒)、ns(納秒),其中:1s=1000ms,1 ms=1000μs,1μs=1000ns。
CPU的主頻,即CPU內核工作的時鍾頻率(CPU Clock Speed)。通常所說的某某CPU是多少兆赫的,而這個多少兆赫就是「CPU的主頻」。很多人認為CPU的主頻就是其運行速度,其實不然。CPU的主頻表示在CPU內數字脈沖信號震盪的速度,與CPU實際的運算能力並沒有直接關系。主頻和實際的運算速度存在一定的關系,但目前還沒有一個確定的公式能夠定量兩者的數值關系,因為CPU的運算速度還要看CPU的流水線的各方面的性能指標(緩存、指令集,CPU的位數等等)。由於主頻並不直接代表運算速度,所以在一定情況下,很可能會出現主頻較高的CPU實際運算速度較低的現象。比如AMD公司的AthlonXP系列CPU大多都能以較低的主頻,達到英特爾公司的Pentium 4系列CPU較高主頻的CPU性能,所以AthlonXP系列CPU才以PR值的方式來命名。因此主頻僅是CPU性能表現的一個方面,而不代表CPU的整體性能。
CPU的主頻不代表CPU的速度,但提高主頻對於提高CPU運算速度卻是至關重要的。舉個例子來說,假設某個CPU在一個時鍾周期內執行一條運算指令,那麼當CPU運行在100MHz主頻時,將比它運行在50MHz主頻時速度快一倍。因為100MHz的時鍾周期比50MHz的時鍾周期佔用時間減少了一半,也就是工作在100MHz主頻的CPU執行一條運算指令所需時間僅為10ns比工作在50MHz主頻時的20ns縮短了一半,自然運算速度也就快了一倍。只不過電腦的整體運行速度不僅取決於CPU運算速度,還與其它各分系統的運行情況有關,只有在提高主頻的同時,各分系統運行速度和各分系統之間的數據傳輸速度都能得到提高後,電腦整體的運行速度才能真正得到提高。
匯流排是將計算機微處理器與內存晶元以及與之通信的設備連接起來的硬體通道。前端匯流排將CPU連接到主內存和通向磁碟驅動器、數據機以及網卡這類系統部件的外設匯流排。人們常常以MHz表示的速度來描述匯流排頻率。
前端匯流排(FSB)頻率是直接影響CPU與內存直接數據交換速度。由於數據傳輸最大帶寬取決於所有同時傳輸的數據的寬度和傳輸頻率,即數據帶寬=(匯流排頻率×數據位寬)÷8。目前PC機上所能達到的前端匯流排頻率有266MHz、333MHz、400MHz、533MHz、800MHz幾種,前端匯流排頻率越大,代表著CPU與內存之間的數據傳輸量越大,更能充分發揮出CPU的功能。現在的CPU技術發展很快,運算速度提高很快,而足夠大的前端匯流排可以保障有足夠的數據供給給CPU。較低的前端匯流排將無法供給足夠的數據給CPU,這樣就限制了CPU性能得發揮,成為系統瓶頸。
外頻與前端匯流排頻率的區別:前端匯流排的速度指的是數據傳輸的速度,外頻是CPU與主板之間同步運行的速度。也就是說,100MHz外頻特指數字脈沖信號在每秒鍾震盪一千萬次;而100MHz前端匯流排指的是每秒鍾CPU可接受的數據傳輸量是100MHz×64bit÷8Byte/bit=800MB/s。
CPU : 二級緩存容量
CPU緩存(Cache Memoney)位於CPU與內存之間的臨時存儲器,它的容量比內存小但交換速度快。在緩存中的數據是內存中的一小部分,但這一小部分是短時間內CPU即將訪問的,當CPU調用大量數據時,就可避開內存直接從緩存中調用,從而加快讀取速度。由此可見,在CPU中加入緩存是一種高效的解決方案,這樣整個內存儲器(緩存+內存)就變成了既有緩存的高速度,又有內存的大容量的存儲系統了。緩存對CPU的性能影響很大,主要是因為CPU的數據交換順序和CPU與緩存間的帶寬引起的。
緩存的工作原理是當CPU要讀取一個數據時,首先從緩存中查找,如果找到就立即讀取並送給CPU處理;如果沒有找到,就用相對慢的速度從內存中讀取並送給CPU處理,同時把這個數據所在的數據塊調入緩存中,可以使得以後對整塊數據的讀取都從緩存中進行,不必再調用內存。
正是這樣的讀取機制使CPU讀取緩存的命中率非常高(大多數CPU可達90%左右),也就是說CPU下一次要讀取的數據90%都在緩存中,只有大約10%需要從內存讀取。這大大節省了CPU直接讀取內存的時間,也使CPU讀取數據時基本無需等待。總的來說,CPU讀取數據的順序是先緩存後內存。
最早先的CPU緩存是個整體的,而且容量很低,英特爾公司從Pentium時代開始把緩存進行了分類。當時集成在CPU內核中的緩存已不足以滿足CPU的需求,而製造工藝上的限制又不能大幅度提高緩存的容量。因此出現了集成在與CPU同一塊電路板上或主板上的緩存,此時就把 CPU內核集成的緩存稱為一級緩存,而外部的稱為二級緩存。一級緩存中還分數據緩存(I-Cache)和指令緩存(D-Cache)。二者分別用來存放數據和執行這些數據的指令,而且兩者可以同時被CPU訪問,減少了爭用Cache所造成的沖突,提高了處理器效能。英特爾公司在推出Pentium 4處理器時,還新增了一種一級追蹤緩存,容量為12KB.
隨著CPU製造工藝的發展,二級緩存也能輕易的集成在CPU內核中,容量也在逐年提升。現在再用集成在CPU內部與否來定義一、二級緩存,已不確切。而且隨著二級緩存被集成入CPU內核中,以往二級緩存與CPU大差距分頻的情況也被改變,此時其以相同於主頻的速度工作,可以為CPU提供更高的傳輸速度。
二級緩存是CPU性能表現的關鍵之一,在CPU核心不變化的情況下,增加二級緩存容量能使性能大幅度提高。而同一核心的CPU高低端之分往往也是在二級緩存上有差異,由此可見二級緩存對於CPU的重要性。
CPU在緩存中找到有用的數據被稱為命中,當緩存中沒有CPU所需的數據時(這時稱為未命中),CPU才訪問內存。從理論上講,在一顆擁有二級緩存的CPU中,讀取一級緩存的命中率為80%。也就是說CPU一級緩存中找到的有用數據占數據總量的80%,剩下的20%從二級緩存中讀取。由於不能准確預測將要執行的數據,讀取二級緩存的命中率也在80%左右(從二級緩存讀到有用的數據占總數據的16%)。那麼還有的數據就不得不從內存調用,但這已經是一個相當小的比例了。目前的較高端的CPU中,還會帶有三級緩存,它是為讀取二級緩存後未命中的數據設計的—種緩存,在擁有三級緩存的CPU中,只有約5%的數據需要從內存中調用,這進一步提高了CPU的效率。
為了保證CPU訪問時有較高的命中率,緩存中的內容應該按一定的演算法替換。一種較常用的演算法是「最近最少使用演算法」(LRU演算法),它是將最近一段時間內最少被訪問過的行淘汰出局。因此需要為每行設置一個計數器,LRU演算法是把命中行的計數器清零,其他各行計數器加1。當需要替換時淘汰行計數器計數值最大的數據行出局。這是一種高效、科學的演算法,其計數器清零過程可以把一些頻繁調用後再不需要的數據淘汰出緩存,提高緩存的利用率。
CPU產品中,一級緩存的容量基本在4KB到18KB之間,二級緩存的容量則分為128KB、256KB、512KB、1MB等。一級緩存容量各產品之間相差不大,而二級緩存容量則是提高CPU性能的關鍵。二級緩存容量的提升是由CPU製造工藝所決定的,容量增大必然導致CPU內部晶體管數的增加,要在有限的CPU面積上集成更大的緩存,對製造工藝的要求也就越高。
雙核心CPU的二級緩存比較特殊,和以前的單核心CPU相比,最重要的就是兩個內核的緩存所保存的數據要保持一致,否則就會出現錯誤,為了解決這個問題不同的CPU使用了不同的辦法:
Intel雙核心處理器的二級緩存
目前Intel的雙核心CPU主要有Pentium D、Pentium EE、Core Duo三種,其中Pentium D、Pentium EE的二級緩存方式完全相同。Pentium D和Pentium EE的二級緩存都是CPU內部兩個內核具有互相獨立的二級緩存,其中,8xx系列的Smithfield核心CPU為每核心1MB,而9xx系列的Presler核心CPU為每核心2MB。這種CPU內部的兩個內核之間的緩存數據同步是依靠位於主板北橋晶元上的仲裁單元通過前端匯流排在兩個核心之間傳輸來實現的,所以其數據延遲問題比較嚴重,性能並不盡如人意。
Core Duo使用的核心為Yonah,它的二級緩存則是兩個核心共享2MB的二級緩存,共享式的二級緩存配合Intel的「Smart cache」共享緩存技術,實現了真正意義上的緩存數據同步,大幅度降低了數據延遲,減少了對前端匯流排的佔用,性能表現不錯,是目前雙核心處理器上最先進的二級緩存架構。今後Intel的雙核心處理器的二級緩存都會採用這種兩個內核共享二級緩存的「Smart cache」共享緩存技術。
AMD雙核心處理器的二級緩存
Athlon 64 X2 CPU的核心主要有Manchester和Toledo兩種,他們的二級緩存都是CPU內部兩個內核具有互相獨立的二級緩存,其中,Manchester核心為每核心512KB,而Toledo核心為每核心1MB。處理器內部的兩個內核之間的緩存數據同步是依靠CPU內置的System Request Interface(系統請求介面,SRI)控制,傳輸在CPU內部即可實現。這樣一來,不但CPU資源佔用很小,而且不必佔用內存匯流排資源,數據延遲也比Intel的Smithfield核心和Presler核心大為減少,協作效率明顯勝過這兩種核心。不過,由於這種方式仍然是兩個內核的緩存相互獨立,從架構上來看也明顯不如以Yonah核心為代表的Intel的共享緩存技術Smart Cache。性能上基本感覺不出有什麼差異,p7350發熱量要小點。特別是夏天到了,熱量當然是越少越好!當然你也可以買T6600的,省下來的100快可以沒一個好一點的散熱底座了!你可以稍微衡量一下。
I. 常見的前端性能優化手段都有哪些都有多大收益
規則01:盡量減少HTTP請求
前端優化的黃金准則指導著前端頁面的優化策略:只有10%-20%的最終用戶響應時間花在接受請求的HTML文檔上,剩下的80%-90%時間花在為HTML文檔所引用的所有組件(圖片、腳本、樣式表等)進行的HTTP請求上。因此,改善響應時間的最簡單途徑就是減少組件的數量,並由此減少HTTP請求的數量。當然很多人就會說,既然這樣,那我們就減少頁面組件的數量不就OK了嗎?那你試試,你會掀起一場性能優化和產品設計之間的大PK。
所以,我們要減少HTTP請求是要平衡性能和設計的。如果找到這個平衡點呢?書中從以下幾個方面做了介紹,我逐一說明:
① 圖片地圖
初看「圖片地圖」四個字,對非專業的前端人員來說一頭霧水,我的第一印象就是這樣的,咱們以京東的移動站點為例,右側用戶和購物車的圖標,正常實現我會選擇如下方式:
<a href=」用戶跳轉頁面URL」>
<div class=」定義用戶icon顯示的樣式表」></div>
</a>
<a href=」購物車跳轉頁面URL」>
<div class=」 定義用戶icon顯示的樣式表」></div>
</a>
這種方式無可厚非的,但是兩張圖片就有兩個HTTP請求,這明顯是增加了頁面中的HTTP請求。那麼我們可以把這兩個HTTP請求變成一個嗎?
答案當然是可以的,這就是圖片地圖:允許在一張圖片上關聯多個URL,而目標URL的選擇取決於用戶單擊了圖片上的哪個位置。
這樣上面京東兩個圖標合並成一張圖片,這樣圖片的HTTP請求就減少了一個。
示例代碼如下:
<img src=合並後的圖片>
<map name=」map1」>
<areashape=」rect」 coords=」0,0,40,40」 href=」用戶跳轉頁面URL」>
<areashape=」rect」 coords=」50,0,90,40」 href=」購物車跳轉頁面URL」>
</map>
不過圖片地圖只支持矩形形狀,其他形狀不支持。
② 請CSS喝「雪碧」(CSS Sprites)CSS Sprites一句話:將多個圖片合並到一張單獨的圖片,這樣就大大減少了頁面中圖片的HTTP請求。
③ 內聯圖片和腳本使用data:URL(Base64編碼)模式直接將圖片包含在Web頁面中而無需進行HTTP請求。但是此種方法存在明顯缺陷:- 不受IE的歡迎;- 圖片太大不宜採用這種方式,因為Base64編碼之後會增加圖片大小,這樣頁面整體的下載量會變大;- 內聯圖片在頁面跳轉的時候不會被緩存。(大圖片可以使用瀏覽器的本地緩存,在首次訪問的時候保存到瀏覽器緩存中,典型的是HTML5的manifest緩存機制以及LocalStorage等)。
④ 樣式表的合並將頁面樣式定義、腳本、頁面本身代碼嚴格區分開,但是樣式表、腳本也不是分割越細越好,因為沒多引用一個樣式表就增加一次HTPP請求,能合並的樣式表盡量合並。一個網站有一個公用樣式表定義,每個頁面只要有一個樣式表就OK啦。
通過以上四個努力之後,你會發現你的網頁響應時間最多能減少一半,這不是作者說大話,也不是我狂吹,我親手用我的移動網站首頁做了一個嘗試,本地測試之後響應時間能減少40%左右。所以減少頁面HTTP請求數量,是一個很重要的原則。遵循此原則可以同時改善首次訪問和後續訪問的響應時間,而每一個網站的首次響應時間會決定用戶之後還來不來的重要原因。
規則02:使用內容發布網路(CDN的使用)
什麼叫內容發布網路(CDN)?它是一組分布在多個不同地理位置的Web伺服器,用於更加有效地向用戶發布內容。主要用於發布頁面靜態資源:圖片、css文件、js文件等。如此,能輕易地提高響應速度。關於CDN的具體詳細原理以及優缺點,各位可以自行詢問度娘或者google。
規則03:添加Expires頭
瀏覽器使用緩存來減少HTTP請求的數據,並減小HTTP響應的大小,使頁面載入更快。Web伺服器使用Expires頭來告訴瀏覽器它可以使用一個組件的當前副本,直到指定的deadline為止。HTTP規范中稱此頭為:在這一時間之後響應被認為失效。個人對這塊表示不想使用,其實就是一句話,把一些css、js、圖片在首次訪問的時候全部緩存到瀏覽器本地,從我做移動網站的過程中發現,其實沒有這么復雜,完全可以使用HTML5提供的本地緩存機制就OK了。關於HTML5本地緩存機制,各位可以查閱相關資料。後續我也會對HTML5的緩存機制進行介紹的。
規則04:壓縮組件(使用Gzip方式)
書中關於壓縮從gzip壓縮方式到如何壓縮講了很多,我想直接跳過,對於做PC網站或者移動網站來說,急需要壓縮的是css文件和js文件,至於如何壓縮,網上有很多在線工具,去挑選一個自己用的順手看的順眼的就好,當然也有人選擇對HTML進行壓縮,這樣也可以。但是實際工作中我沒有這么做。之所謂沒有這么做,是因為我覺得很麻煩。不要鄙視我,畢竟我不是一個真正意義上的前端工程師,哈哈!
規則05:將CSS樣式表放在頂部
如果將css樣式定義放在頁面中或者頁面底部,會出現短暫白屏或者某一區域短暫白板的情況,這和瀏覽器的運營機制有關的,不管頁面如何載入,頁面都是逐步呈現的。所以在每做一個頁面的時候,用Link標簽把每一個樣式表定義放在head中。
規則06:將javascript腳本放在底部
瀏覽器在載入css文件時,頁面逐步呈現會被阻止,直到所有css文件載入完畢,所以要把css文件的引用放到head中去,這樣在載入css文件時不會組織頁面的呈現。但是對於js文件,在使用的時候,它下面所有也頁面內容的呈現都會被阻塞,將腳本放在頁面越靠下的地方,就意味著越多的內容能夠逐步呈現。
規則07:避免使用CSS表達式
CSS表達式是動態玩CSS的一種很強大的方式,但是強大的同時也存在很高的危險性。因為css表達式的頻繁求值會導致css表達式性能低下。如果真想玩css表達式,可以選用只求值一次的表達式或者使用事件處理來改變css的值。
規則08:使用外部javascript和CSS內聯js和css其實比外部文件有更快的響應速度,那為什麼還要用外部呢?因為使用外部的js和css可以讓瀏覽器緩存他們,這樣不僅HTML文檔大小減少,而且不會增加HTTP請求數量。另外,使用外部js和css可以提高組件的可復用性。
規則09:減少DNS查詢
DNS查詢有時間開銷,通常一個瀏覽器查找一個給定主機名的IP地址需要20-120ms。緩存DNS:緩存DNS查詢可以很好地提高網頁性能,一旦緩存了DNS查詢,之後對於相同主機名的請求就無需進行再次的DNS查找,至少短時間內不需要。所以在使用頁面中URL、圖片、js文件、css文件等時,不要使用過多不同的主機名。
規則10:精簡javascript
如何精簡?
其實W3Cfuns已經給大家准備好精簡JS所需的所有工具「前端神器」,這點W3Cfuns為大家做的很不錯,在這個規則里我們就用到「JS壓縮/混淆/美化工具」
最初始的精簡方式:就是移除不必要的字元減小js文件大小,改善載入時間。包括所有的注釋、不必要的空白字元。
高級一點的精簡方式就是:混淆。
它不但會移除不必要的字元,還會改寫代碼,比如函數和變數的名字會被改成很短的字元串,這樣使js代碼更簡練更難閱讀。
但是我一般很少使用混淆,一個現在互聯網時代,代碼沒有必要整的那麼神秘,大可以大家一起share,天下代碼一起抄,只要抄出自己的特色就ok了。
而且一旦使用混淆,對於js代碼的維護和調試都很復雜,因為有時候混淆之後的js代碼完全看不懂。其實實際開發過程中,從文件大小和代碼可復用性來說,不僅僅是js代碼需要精簡,css代碼一樣也很需要精簡。
規則11:避免重定向
重定向的英文是Redirect,用於將用戶從一個URL重新跳轉到另一個URL。
最常見的Redirect就是301和302兩種。
關於重定向的性能影響這里就不說了,自行查閱相關資料吧。
在我們實際開發中避免重定向最簡單也最容易被忽視的一個問題就是,設置URL的時候,最後的「/」,有些人有時候會忽略,其實你少了「/」,這時候的URL就被重定向了,所以在給頁面鏈接加URL的時候切記最後的「/」不可丟。
規則12:刪除重復腳本
重復的js代碼除了有不必要的HTTP請求之外,還會浪費執行js的時間。
將你使用的js代碼模塊化,可以很好地避免這個問題,至於js模塊化如何實現,現在有很多可以使用的開源框架,我用的比較多的是我們公司玉伯的Sea.js。
規則13:配置ETag
Etag(Entity Tag),實體標簽,是Web伺服器和瀏覽器用戶確認緩存組件的有效性的一種機制。寫的很復雜,對我這種非專業的前端開發人員來說,有點過了,關於這個原則有興趣的自己看吧。
規則14:使Ajax可緩存
針對頁面中主動的Ajax請求返回的數據要緩存到本地,當然這個是針對短期內不會變化的數據。如果不確定數據變化周期的話,可以增加一個修改標識的判斷,我正常處理過程中會給一些Ajax請求返回的數據增加一個MD5值的判斷,每次請求會判斷當前MD5是否變化,如果變化了取最新的數據,如果不變化,則不變。
J. web前端開發框架有哪些
常見的web前端開發框架如下:
1、Bootstrap:
主流框架之一,Bootstrap 是基於 HTML、CSS、JavaScript的,它簡潔靈活,使得 Web 開發更加快捷。
2、html5-boilerplate:
該框架可以快速構建健壯,且適應力強的web app或網站。
3、Meteor:
Meteor是新一代的開發即時web應用的開源框架,它能在較短時間內完成開發。
4、Materialize:
基於材料設計的現代化響應式前端框架。可提供默認的樣式,自定義組件。此外,Materialize還改進動畫和過渡,為開發人員提供流暢的體驗。
5、Amaze UI:
國內首個開源HTML5跨屏前端框架產品系列,中文排版支持更優、本土化組件豐富。該產品系列中有專門針對移動端的HTML5混合應用開發框架Amaze UI Touch以及針對跨屏HTML5網頁開發的Amaze UI Web。
(10)前端緩存框架擴展閱讀:
web框架程序的作用:
Web框架使得在進行Web應用開發的時候,減少了工作量。Web框架主要用於動態網路開發,動態網路主要是指現在的主要的頁面,可以實現數據的交互和業務功能的完善。
使用Web框架進行Web開發的時候,在進行數據緩存、資料庫訪問、數據安全校驗等方面,不需要自己再重新實現,而是將業務邏輯相關的代碼寫入框架就可以。也就是說,通過對Web框架進行主觀上的「縫縫補補」,就可以實現自己進行Web開發的需求了。
以PHP為例,PHP可以在apache伺服器上進行Web開發,而不必使用框架。使用PHP進行開的時候,在不適用框架的情況下,資料庫連接就需要自己來實現,頁面的生成和顯示也是一樣。比如框架的話可以完成避免sql注入的工作,而使用PHP在不用框架的情況下,這部分要自己做。
參考資料來源:網路-前端開發