日本免费全黄少妇一区二区三区-高清无码一区二区三区四区-欧美中文字幕日韩在线观看-国产福利诱惑在线网站-国产中文字幕一区在线-亚洲欧美精品日韩一区-久久国产精品国产精品国产-国产精久久久久久一区二区三区-欧美亚洲国产精品久久久久

分享優(yōu)化的3大好處 優(yōu)化的好處有哪些

秒殺系統(tǒng)說了幾次了,基本技術(shù)點(diǎn)都有所涉及 。真正的要解決大流量分布式系統(tǒng)的時(shí)候,不是特別容易,就像CAP原則和BASE原則,沒有最優(yōu)的方案,只有最合適的 。
(一)頁面靜態(tài)化
  • 技術(shù)方案
  1. 通過程序?qū)?dòng)態(tài)頁面抓取并保存為靜態(tài)頁面,這樣的頁面的實(shí)際存在于服務(wù)器的硬盤中
  2. 通過WEB服務(wù)器的 URL Rewrite的方式,它的原理是通過web服務(wù)器內(nèi)部模塊按一定規(guī)則將外部的URL請(qǐng)求轉(zhuǎn)化為內(nèi)部的文件地址,一句話來說就是把外部請(qǐng)求的靜態(tài)地址轉(zhuǎn)化為實(shí)際的動(dòng)態(tài)頁面地址,而靜態(tài)頁面實(shí)際是不存在的 。這兩種方法都達(dá)到了實(shí)現(xiàn)URL靜態(tài)化的效果,但是也各有各自的特點(diǎn) 。
  3. 還有一種是把頁面劃分成子數(shù)據(jù)塊,每個(gè)數(shù)據(jù)塊可能是一個(gè)inc文件,也可能多個(gè)數(shù)據(jù)塊包含在一個(gè)inc文件中 。具體的數(shù)據(jù)塊劃分根據(jù)頁面的業(yè)務(wù)結(jié)構(gòu)來處理 。比如:網(wǎng)站頭尾等公共數(shù)據(jù)塊可以獨(dú)立成一個(gè)文件 。
  • 技術(shù)點(diǎn)
Freemaker,
非常明確的說明了FreeMarker是如何運(yùn)作的 。首先需要有一個(gè)template模板,在那里就是一堆的html標(biāo)簽和一些專屬FreeMarker的標(biāo)簽,這些標(biāo)簽之后會(huì)被具體的數(shù)據(jù)代替 。這些數(shù)據(jù)就是有左下的Java objects提供 。<FreeMarker>就是工程中的Jar包 。他把這些模板和Java objects的數(shù)據(jù)加工組合之后輸出html頁面 。所以,F(xiàn)reeMarker的功能,就如官網(wǎng)中一直強(qiáng)調(diào)的,不是別的而是一個(gè)模板引擎 。
通過工具的方式,模板講動(dòng)態(tài)的頁面生成對(duì)應(yīng)的靜態(tài)頁面 。對(duì)于商品來說,上架審核的時(shí)候完成 。
  • 問題:如果商品很多一個(gè)一個(gè)生成html,是不是很麻煩,就算加入批量的話,還是有問題,分布式系統(tǒng)怎么辦?freemark的效率不是特別的快?
  1. 寫一個(gè)消息隊(duì)列,發(fā)個(gè)消息把商品的ID發(fā)送到MQ隊(duì)列中,這樣每次收到隊(duì)列消息就生成靜態(tài)頁面 。
  2. 頁面路徑如果放入tomcat也是有問題的,tomcat可以承受1000個(gè),在秒殺的時(shí)候都是在狂刷頁面的,html直接扔到nginx上面去 。如果tomcat可以承受1000個(gè)并發(fā),那nginx可以承受1萬個(gè)并發(fā) 。
  3. 如果放入到nginx上,分布式系統(tǒng)豈不是每個(gè)nginx都放入生成的html靜態(tài)文件,手工在一個(gè)一個(gè)放,人力成本開銷太大了 。使用mq,需要使用topic訂閱的方式,讓每個(gè)tomcat來進(jìn)行處理 。其實(shí)這樣很占資源 。
  4. 其實(shí)不如單獨(dú)弄一個(gè)應(yīng)用,接受mq的消息,不使用訂閱方式,然后mq生成好的html往每個(gè)nginx上面去復(fù)制就可以了 。
  5. 上面說的復(fù)制使用rsync,不要使用scp,rsync復(fù)制的是變化的文件,scp是全量復(fù)制 。對(duì)于大量的靜態(tài)文件下scp絕對(duì)是一種災(zāi)難 。
(二)靜態(tài)資源優(yōu)化
  1. 從taobao或者京東上面下載的js,都是一行基本沒辦法看,其實(shí)就是做了一些壓縮,一個(gè)是為了減少流量,二加快頁面的加載速度 。
  2. css和js,類似jquery,echars下載了對(duì)應(yīng)的jar包后,如果頁面內(nèi)有多個(gè)引入的項(xiàng)目?jī)?nèi)的js,就會(huì)造成每個(gè)頁面都訪問對(duì)應(yīng)的js,可以通過webpack的方式將多個(gè)js合并到一起一個(gè)js 。css合并到一起變成一個(gè)css,減少網(wǎng)絡(luò)之間通信的次數(shù) 。
(三)CDN
【分享優(yōu)化的3大好處 優(yōu)化的好處有哪些】CDN的全稱是Content Delivery Network,即內(nèi)容分發(fā)網(wǎng)絡(luò) 。
  1. CDN其實(shí)就是在你家附近開個(gè)加油站,其實(shí)這個(gè)加油站得油,是自己啦了一個(gè)油管從到他們加油站的總公司,有了CDN你不用在跑10公里加油了,只用開1公里就可以加到油了 。(就近分發(fā))
  2. 在油管里面都是老油可能過期的油,總公司會(huì)給你家就近的加油站打電話,現(xiàn)在油管里面的油都是過期的,你必須把老油處理掉 。(服務(wù)端通知CDN刷新緩存) 。

    推薦閱讀