優化的34條定律

?

1.Minimize HTTP Requests 減少HTTP請求

圖片、css、script、flash等等這些都會增加http請求數,減少這些元素的數量就能減少響應時間。把多個JS、CSS在可能的情況下寫進一個文件,頁面里直接寫入圖片也是不好的做法,應該寫進CSS里,利用 CSS sprites 將小圖拼合后利用background來定位。

2.Use a Content Delivery Network 利用CDN技術
CDN的全稱是Content Delivery Network,即內容分發網絡。其基本思路是盡可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定。通過在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡,CDN系統能夠實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應時間等綜合信息將用戶的請求重新導向離用戶最近的服務節點上。其目的是使用戶可就近取得所需內容,解決 Internet網絡擁擠的狀況,提高用戶訪問網站的響應速度。


3.Add an Expires or a Cache-Control Header 設置頭文件過期或者靜態緩存

瀏覽器會用緩存來減少http請求數來加快頁面加載的時間,如果頁面頭部加一個很長的過期時間,瀏覽器就會一直緩存頁面里的元素。不過這樣如果 頁面里的東西變動的話就要改名字了,否則用戶端不會主動刷新,看自己衡量了~ 這項可以通過修改.htaccess文件來實現。
4.Gzip Components Gzip壓縮

Gzip格式是一種很普遍的壓縮技術,幾乎所有的瀏覽器都有解壓Gzip格式的能力,而且它可以壓縮的比例非常大,一般壓縮率為85%。壓縮沒壓縮,可以到 這里 做下測試。
5.Put Stylesheets at the Top 把CSS放頂部

讓瀏覽者能盡早的看到網站的完整樣式。
6.Put Scripts at the Bottom 把JS放底部

網站呈現完畢后再進行功能設置,當然這些JS要在你的加載過程中不影響內容表現。

7.Avoid CSS Expressions 避免CSS Expressions

CSS表達式很可怕,這個只被IE支持的東西執行時候的運算量非常大,你移動一下鼠標它都要進行重計算的,但有時候為了做瀏覽器的兼容必須要用到這個||| IE6去死去死!~
8.Make JavaScript and CSS External 將JS和CSS外鏈

前面講到了緩存這個事情,一些較為公用的JS和CSS,我們可以使用外鏈的形式,譬如我就是從Google外鏈來的Jquery文件,如果我的瀏覽者在瀏覽別的使用了這個外鏈文件的網站時已經下載并緩存了這個文件,那么他在瀏覽我的網站的時候就不需要再進行下載了!~
9.Reduce DNS Lookups 減少DNS查找

貌似是要減少網站從外部調用資源,我的Google分析和picasa的外鏈圖片都算在里面了。
10.Minify JavaScript and CSS 減小JS和CSS的體積

寫JS和CSS都是有技巧的,用最少的代碼實現同樣的功能,減少空白,增強邏輯性,用縮寫方式等等,當然也有不少工具也能夠幫你實現這一點。
11. Avoid Redirects 避免重定向

再寫入鏈接時,雖然”http://www. today-s-ooxx. com”和”http://www. today-s-ooxx. com/” 僅有一個最后的”/”只差,但是結果是不同的,服務器需要花時間把前者重定向為后者然后進行跳轉,這個要自己注意,也可以在Apache里用Alias 或者mod_rewrite或者DirectorySlash解決。
12. Remove Duplicate Scripts 刪除重復腳本

重復調用的代碼瀏覽器并不會識別忽略,而是會再次運算一遍,這當然是大大的浪費。
13. Configure ETags 配置ETags

搞不清楚咋回事,總之我是在. htaccess里把它刪除了。
14. Make Ajax Cacheable 緩存Ajax

Ajax是實時響應的,在瀏覽器接收到新的數據前,舊的數據被緩存,這樣能夠更好的提高效率。
15. Flush the Buffer Early 盡早的釋放緩沖

當用戶進行頁面請求時,服務器端需要花費200到500毫秒時間來拼合HTML,將寫在head與body之間,釋放緩沖,這樣可以將文件頭先發送出去,然后再發送文件內容,提高效率。
16. Use GET for AJAX Requests 用GET方式進行AJAX請求

Get 方法和服務器只有一次交互(發送數據),而 Post 要兩次(發送頭部再發送數據)。
17. Post-load Components 延遲加載組件

最先加載必須的組件進行頁面初始化,然后再加載其他,YUI Image Loader 是很好的例子。
18. Preload components 預加載組件

提前加載以后可能用到的東西,和延遲加載并不沖突,它的目的是為后續請求提供更快的響應,參見Google首頁上的CSS sprites應用。
19. Reduce the Number of DOM Elements 減少DOM元素數量

復雜的頁面結構意味著更長的下載及響應時間,更合理更高效的使用標簽來架構頁面,是好的前端的必備條件。
20. Split Components Across Domains 跨域分離組件

頁面組件多個來源可以增大你的平行下載量,但注意不要過多,超過2-4個域名會引起上面說到的DNS查找浪費。
21. Minimize the Number of iframes 減少iframe數量

需要更有效的利用 ifames。
iframe 優點:有利于下載緩慢的廣告等第三方內容,安全沙箱,并行下載腳本
iframe 缺點:即使為空也會有較大資源消耗,會阻止頁面的onload,非語義
22. No 404s 不要出現404頁面

站點本身里(非搜索結果)出現404頁面,無意義的404頁面會影響用戶體驗并且會消耗服務器資源。
23. Reduce Cookie Size 減小Cookie

Cookie在服務器及瀏覽器之間的通過文件頭進行交換,盡可能減小Cookie體積,設置合理的過期時間,能夠很好的提高效率。
24. Use Cookie-free Domains for Components 對組件使用無Cookie的域名

對靜態組件的Cookie讀取是一種浪費,使用另一個無Cookie的域名來存放你的靜態組件式一個好方法,或者也可以在Cookie中只存放帶www的域名。
25. Minimize DOM Access 減少DOM的訪問次數

JS訪問DOM是很慢的,盡量不要用JS來設置頁面布局。
26. Develop Smart Event Handlers 開發靈活的事件處理句柄

DOM樹上過多的元素被加入事件句柄的話,反應效率肯定會低,YUI事件工具有一個 onAvailable 方法可以幫助你靈活的設置DOM事件句柄
27. Choose < link >over @import 使用< link >而非 @import

在IE中使用@import就和在頁面底部用< link >一樣,我們前面說要把< link >放頂部的。
28. Avoid Filters 避免過濾器的使用

如果需要Alpha透明,不要使用AlphaImageLoader,它效率低下而且只對IE6及以下的版本適用,用PNG8圖片。如果你非要使用,加上_filter以免影響IE7+用戶。
29. Optimize Images 優化圖片

將你的GIF轉為PNG8會是個減小體積的好辦法,另外有很多方法處理你的JPG及PNG圖片以達到優化效果。
30. Optimize CSS Sprites 優化CSS Sprites

在CSS Sprites中豎直并盡量緊湊的排列圖片,盡量將顏色相似的圖片排在一起,會減小圖片本身的大小及提高頁面圖片顯示速度。
31. Don’t Scale Images in HTML 不要在HTML中縮放圖片

圖片要用多大的就用多大的,1000X1000的圖片被width=”100″ height=”100″以后,本身的KB數是不會減少的。
32. Make favicon. ico Small and Cacheable 縮小favicon. ico的大小并緩存它

站點的瀏覽器ICO應該不是經常換吧,那就長時間的緩存它,并且最好控制在1K以下。
33. Keep Components under 25K 保證組件在25K以下

iPhone不能緩存25K以上的組件,并且這還是要在被壓縮前。
34. Pack Components into a Multipart Document 將組件打包進一個多部分的文檔中

就好像在郵件中加入附件一樣,一個HTTP請求就夠了,但是這一技術需要確保你的代理支持,iPhone就不支持。

轉載于:https://www.cnblogs.com/copper6/p/6506845.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/372776.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/372776.shtml
英文地址,請注明出處:http://en.pswp.cn/news/372776.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

休眠提示:排序和排序

讓我們介紹另一個休眠性能提示。 你還記得以前的休眠的模式后 &#xff1f; 我們有一個與一對多協會有關的星際飛船和軍官。 Entity public class Starship {Id GeneratedValue(strategyGenerationType.SEQUENCE) private Long id;public Long getId() {return id;}protected v…

java 基本類型 線程安全_java的基本類型和i++線程安全性的深入解析

在java中&#xff0c;除了long和double的8個字節、64位比特的變量外&#xff0c;其他的基本變量都是原子性的。java存儲模型要求獲取和存儲操作都為原子性&#xff0c;但是對于非volatile的long和double變量&#xff0c;jvm允許將64位的讀或寫劃分為兩個32位的操作。如果讀和寫…

MySQL配置文件mysql.ini參數詳解

my.ini&#xff08;Linux系統下是my.cnf&#xff09;&#xff0c;當mysql服務器啟動時它會讀取這個文件&#xff0c;設置相關的運行環境參數。 my.ini分為兩塊&#xff1a;Client Section和Server Section。 Client Section用來配置MySQL客戶端參數。 要查看配置參數可以用下面…

微信公眾平臺和微信開放平臺的區別

自己也剛開始做微信開發&#xff0c;先寫寫自己的認識&#xff1a; 用微信公眾平臺可以做手機端H5頁面的微信登錄&#xff0c;微信支付 用微信開放平臺可以做PC端網頁的微信登錄。 轉載于:https://www.cnblogs.com/mafeng/p/5610770.html

java 傳遞bean_如何將bean作為參數傳遞給JSP標記?

我ve created a custom JSP tag that is supposed to accept a list of products to render, but I我無法弄清楚如何將列表傳遞給標簽 . 產品列表作為頁面范圍的bean存在 . Web應用程序使用Struts taglib在Struts 1.2.x中編寫 .這是我的代碼的簡化版本&#xff1a;renderProduc…

Business Component(BC)和Business Object(BO)

Siebel應用架構的一個成功的地方就是在應用里引入了BC&#xff0c;BO的概念&#xff0c;從而使得幾千張關系數據表能夠按照業務的含義組織成業務對象&#xff0c;對于業務人員而言具有了業務上的含義&#xff0c;而不僅僅是從技術人員的觀點來對待數據&#xff08;就是關系表而…

NetBeans可用性提示

的Java IDE都來了&#xff0c;因為在很長的路要走天的JBuilder的 &#xff08;盡管JBuilder中似乎是一個值得歡迎提前在時間&#xff09;。 當今的Java IDE&#xff08;例如NetBeans &#xff0c; Eclipse &#xff0c; IntelliJ IDEA和JDeveloper &#xff09;是非常先進的工具…

一個JVM進程啟動后里面有幾個線程

在寫Java程序時&#xff0c;通常我們管只有一個main函數&#xff08;而沒有別的Thread或Runnable的程序&#xff09;叫單線程程序。但是我們寫的這個所謂的單線程程序只是JVM這個程序中的一個線程&#xff0c;JVM本身是一個多線程的程序&#xff0c;至少得有一個垃圾收集器線程…

WPF 反編譯后錯誤處理

1. 首先&#xff0c;手動創建一個WPF工程&#xff08;WpfApplicationReflectorDemo&#xff09; 2. 把生成的WpfApplicationReflectorDemo.exe 拖到ILSpy里 3.點擊 File -> Save Code...: 相應的代碼會生成到指定地方。 4. 打開應用程序&#xff0c;并且編譯它&#xff0c;此…

JavaFX 2 GameTutorial第1部分

介紹 我相信大多數軟件開發人員可能會在年輕人&#xff08;年輕人&#xff09;一生中的某一時刻被迫創建游戲來幫助他們學習編程語言&#xff08;我知道我確實做到了&#xff09;。 以前&#xff0c;我的第一臺計算機實際上是Franklin Ace 1000 &#xff0c;后來是Apple [] 。 …

虛擬現實-VR-UE4-認識UE4

VR的火熱&#xff0c;讓每個人都想參與一下&#xff0c; 公司在展會上面搞了一個VR的Demo&#xff0c;關注度超出預期&#xff0c;使得公司高層決定來個VR項目 所以 關于UE4 百度百科地址&#xff1a;http://baike.baidu.com/link?urlmEmbwOcqEuqtkfdu9lNdxVtWAkv0Q6UHZ4VgIHr…

java concurrent 例子_[Java Concurrent] 并發訪問共享資源的簡單案例

EvenGenerator 是一個偶數生成器&#xff0c;每調用一個 next() 就會加 2 并返回疊加后結果。在本案例中&#xff0c;充當被共享的資源。EvenChecker 實現了 Runnable 接口&#xff0c;可以啟動新的線程執行 run() 任務&#xff0c;用于檢測所指向的偶數生成器是否每次都返回偶…

OSGI實戰第一章

第一章 解開OSGI的面紗 OSGI是什么&#xff1f;是Java平臺的一個模塊化層。模塊化&#xff1a;軟件應用程序的代碼被分割為表示獨立內容的邏輯單元&#xff0c;可簡化開發&#xff0c;可通過強化邏輯模塊的界限來提高可維護性。Java模塊化的不足a) Java使用訪問…

輕松完成Birt報告

這是使用Birt插件在Eclipse中構建報告的完整指南。 Birt或Business Intelligence and Reporting工具是一種無需編寫太多Java代碼即可生成報告的工具。 如果您使用的是ireport&#xff0c;那么您知道我在說什么&#xff1a;&#xff09;&#xff08;晶體報告..毫無意義&#xff…

MySQL 的 RowNum 實現

MySQL 下面沒有RowNum&#xff0c;排序后序號卻無法得到&#xff0c;比較麻煩&#xff01; SELECT rownum:rownum1 rownum, CollectSn From(SELECT rownum:0,bbgmain.* FROM qbdb.bbgmain WHERE collectsn! ORDER BY collectsn limit 10) t轉載于:https://www.cnblogs.com/hym-…

java jdbc事務管理_hibernate事務管理 (jdbc jta)

評論# re: hibernate事務管理 (jdbc jta)2007-07-29 10:18pigJTA事務的開始Transaction tx session.beginTransaction();應該不是這樣吧&#xff0c;應該是從容器中獲得。 回復 更多評論# re: hibernate事務管理 (jdbc jta)2007-07-29 12:35slxpig建議看看hibernate referen…

@Resource VS @Autowired

Resource 和 Autowired 均是用于bean注入的注解&#xff0c;都可以寫在字段和setter方法上,如果都寫在字段上&#xff0c;就無需寫setter方法。 Autowired 由Spring的org.springframework.beans.factory.annotation.Autowired提供 默認byType方式注入&#xff0c;并且對象不能為…

用于Spring應用程序的Gradle原型

我發布了Gradle原型&#xff0c;可用于基于Springframework創建Java / Groovy應用程序。 當然&#xff0c;它不是一個真正的原型&#xff0c;因為這樣的創作是不可能的 。不過&#xff0c;你可以創建&#xff0c;編輯和部署應用服務器很少的步驟。 對于可部署的軟件項目而言&am…

java tm無響應_Java(TM) Platform SE binary 未響應 是怎么個情況?

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓988098 [Thread-10] INFO sound.oo0O - Creating streaming player for music with id [faction_pirate_encounter_02_hostile.ogg]988099 [Thread-10] INFO sound.OooO - Playing music with id [faction_pirate_encounter_02_hos…

ROS and PCL install

ROS hydro安裝指南&#xff1a; http://wiki.ros.org/cn/hydro/Installation/Ubuntu &#xff08;加ppa源后直接安裝&#xff09; Linux OpenCV安裝指南&#xff1a;http://blog.sciencenet.cn/blog-571755-694742.html &#xff08;從源代碼編譯&#xff09; PCL&#xff1a;…