整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          突破語言屏障:8款工具助你輕松將外文文檔翻譯成中文

          突破語言屏障:8款工具助你輕松將外文文檔翻譯成中文

          景說明

          數字化時代,無論是工作還是生活,往往會遇到處理各種外文文檔,而將這些文檔迅速而準確地翻譯成中文成了很多人們的剛性需求。推薦8款效率工具,它們將幫助你在點擊之間將外文文檔快速變身為中文。

          工具推薦

          1、沉浸式翻譯(瀏覽器插件):https://immersivetranslate.com

          安裝這款瀏覽器插件后,你將擁有更多選擇,不僅可以翻譯本地PDF文件、THML / TXT文件,以及翻譯本地字幕文件,還支持制作雙語BPUB電子書。

          點擊插件底部「更多」按鈕,選擇「制作雙語BPUB電子書」、「翻譯本地PDF文件」、「翻譯THML / TXT文件」、「翻譯本地字幕文件」即可。

          2、DeepL:www.deepl.com

          在DeepL網站上,只需點擊頁面上的“翻譯文件”按鈕,就可以上傳PDF、Word、PowerPoint文件,輕松完成翻譯。

          3、谷歌翻譯(網頁): translate.google.com

          利用谷歌翻譯,需要先將PDF轉成Word格式,然后點擊“Document”按鈕,上傳Word文檔即可完成快速翻譯。

          4、彩云小譯(網頁/APP):https://fanyi.caiyunapp.com

          通過點擊“文檔”,即可直接導入PDF、Word、Excel、PPT等多種格式文檔并開始翻譯。需要注意的是,該應用有免費次數限制,進階功能需要付費。

          5、微信讀書(App):

          下載微信讀書App后,可以將PDF文檔添加到書架,打開并點擊頁面上方的“切換成電子書”,然后輕觸屏幕即可喚出翻譯按鈕,實現PDF文檔的輕松翻譯。

          6、Calibre(電子書管理應用): calibre-ebook.com

          通過下載并安裝Calibre,再安裝翻譯插件“Ebook Translator”,你將打開電子書管理‘’新世界‘’,無憂翻譯PDF文件。

          7、騰訊交互翻譯:https://transmart.qq.com/

          網頁版直接點擊網頁右上角的“文件翻譯”,支持導入PDF、Word、Excel、TXT、Markdown以及圖片格式,單文件最高支持300頁。

          8、巧用瀏覽器自帶的翻譯功能

          針對一些較大的PDF文件,如果翻譯工具無法支持,你可以將文檔壓縮或切分,又或者將其轉成HTML格式,然后利用瀏覽器自帶的網頁翻譯功能輕松解決翻譯問題。

          希望以上工具可以助你事半功倍,如果你有更好的工具推薦,歡迎下方留言。

          .昨日回顧

          服務器軟件:Apache、IIS

          瀏覽器是一個翻譯官,是一個解釋器。瀏覽器可以翻譯有HTML、CSS、JavaScript。

          服務器端腳本程序:PHP、 .net、JSP、c#等

          .php文件要由PHP腳本引擎來進行處理。

          網站前臺(客戶端) 網站后臺(服務器端) 數據庫

          HTML(結構) PHP MySQL

          CSS JSP Oracle

          JavaScript .net SqlServer

          HTML結構:主要來說明,哪個地方是標題,哪個地方是段落,哪個地方是表格,哪個地方是表單。

          CSS表現(格式):主要功能是,給相對應的HTML標記定義各種各樣的格式。

          JavaScript行為:主要用于與計算機網頁進行交互(交流)。

          塊元素和行內元素

          塊元素:寬度單獨占一個通欄寬,塊元素的前臺的其它元素,都要另起一行來排。

          比如:<p> <pre> <hr> <h1>……<h6> <ul> <ol> <li>

          DIV和SPAN就是一個容器,容器中可以存放任何可以存放在<body>中的內容或標記。

          行內元素:行內元素沒有寬度和高度的概念,也就是說通過CSS無法給行內元素增加寬和高。多個行內元素會放在同一行,不會另起一行來排版。

          2.<marquee></marquee>滾動字幕標記:塊元素

          Direction:滾動的方向,取值:left、right、up、down

          Behavior:滾動的方式,取值:scroll(滾動)、 alternate(彈動)、 slide(滾動一次)

          Width:滾動的區域寬度,取值:px或%

          Height;滾動的區域高度

          bgColor:背景顏色,如:bgcolor=“#FF0000” bgcolor=“rgb(255,0,0)”

          scrollAmount:滾動步長值,一步走多遠,值越大,走的越快

          scrollDelay:兩次滾動的間隔時間,以毫秒為單位 1秒=1000毫秒

          3.計算機進制

          進制,就是一種進位方法。

          10進制:有10個基本數,0、1、2、3、4、5、6、7、8、9,運算規則是:逢十進一

          例如:9 10 19 20 29 30

          2進制:有2個基本數,0、 1,運算規則是:逢二進一。比如:(10)2 11 100 101 110

          8進制:有8個基本數,0、1、2、3、4、5、6、7,運算規則是:逢八進一。比如:(17)8 20 21 26 27 30

          因為二進制太長,不方便記憶,因此小型機引入了八進制,八進制可以很好的反應二進制。

          因此,一個八進制數,用3位二進制數來表示。

          基R=2^3

          16進制:有16個基本數,0、1、2、3、4、5、6、7、8、9、A、B、C、D、E、F,運算規則是:逢16進一

          比如:EF F0 F1 F2 FE FF (100)16

          16進制的一位對應4位二進制。基R=2^4

          10進制12345678910111213141516171819
          2進制1101110010111011110001001101010111100
          8進制1234567101112131415161720
          16進制123456789ABCDEF10111213

          十進制轉成二進制

          分為整數部分和小數部分,分別轉換。比如:將(10.125)10轉成二進制? 1010.001

          (1)整數部分轉成二進制:2取余法。每次將整數除以2,取余數,一直除下去,直到整數部分(商)為0。最后讀數時,從下往上讀取。

          N整數10余數
          第1次10/250
          第2次5/221
          第3次2/210
          第4次1/201最后結果為:1010

          (2)小數部分轉成二進制:2除整法。每次將小數部分乘以2,取整數,一直乘下去,直到小數部分為0。最后讀數時,從上往下讀取。

          N小數0.125整數
          第1次0.125*20.250
          第2次0.25*20.50
          第3次0.5*21.01
          最后結果為:001

          二進制轉成十進制

          不分整數部分和小數部分,按權相加法。換句話說:二進制上的每一位,乘以所在位權(也就是2的幾次方),最后將各個位的乘相加,就能得到十進制。

          1010.001=1*2^3 + 0*2^2 + 1*2^1 + 0*2^0 + 0*2^-1 + 0*2^-2 + 1*2^-3=8+2+ 1/8=10+0.125=10.125

          4.計算機編碼介紹(字符集)

          計算機只能二進制,比如:a-z、A-Z、0-9、標點符號,計算機都不能直接識別。每個人都可以來約定一套字符編碼(比如:a用二進制100表示,b用二進制101表示,c用二進制的110表示等)

          計算機是由美國人發明的,美國標準化局同樣制定了一套統一的編碼,叫ASCII碼。

          ASCII

          ASCII編碼用7位或8位(1個字節)二進制來表示,共可以表示128或256個字符。包括:大小寫字母、數字、標點符號、圖形符號等。

          5.ANSI編碼

          每個國家都想讓計算機能顯示或處理本國的語言,都對ASCII碼進行了擴展。

          在中國(簡體字),ANSI編碼是指GB2312或GBK。

          在臺灣(繁體字),ANSI編碼是指BIG5

          在日本,ANSI編碼是指JIS。

          ……

          注意:ANSI編碼是跟隨操作一齊安裝的,也就是,安裝了中文操作系統后,它的默認編碼就是GB2312。

          6.GB2312編碼

          GB2312是中國標準化局,在1980年制定的一套顯示簡體中文的編碼。

          GB2312是用2個字節來顯示。共可以表示2^16=256*256=65536個字符。

          GB2312共保存了6763個常用漢字,一級漢字3700個。

          GBK編碼

          對GB2312進行了擴充,可以顯示人名、古漢語中的一些罕見字等。

          GBK也是用2個字節來表示。共存儲了2.3萬個左右的中文字符。

          GBK的范圍,要比GB2312大的多。

          BIG5編碼

          BIG5用于臺灣、香港、澳門地區的繁體中文編碼。

          Unicode編碼

          用4個字節表示字符,共可以表示42個億個字符。

          Unicode編碼可以顯示世界上所有國家的語言。

          缺點:文件龐大,效率不高,不利于推廣。

          UTF-8統一格式轉換

          它會自動根據不同的字符,來選擇不同編碼長度。

          7.<meta>標記

          <meta>標記是設置一些網頁文件頭方面的信息。主要包括:網頁編碼或字符集設置、網頁關鍵字、網頁描述、網頁刷新跳轉等。相當于一封信的信封,信封有地址、郵編等重要。

          <head>標記中的內容在瀏覽器中,是不可見的。

          主要用兩個常用的屬性:

          http-equiv:主要設置一些控制信息,屬性值是固定的。比如:content-type

          name:一般用于設置網頁描述信息,像關鍵字、網頁描述、網頁版權、作者等,屬性值是固定的。比如:keywords

          content:是具體的參數或內容,與http-equiv和name屬性進行對應。

          (1)設置網頁的字符集或編碼

          <meta http-equiv=“content-type” content=“text/html;charset=GBK”>

          (2)設置網頁刷新或跳轉

          <meta http-equiv=“refresh” content=“5”> 表示每隔5秒鐘,刷新網頁

          <meta http-equiv=“refresh” content=“5;url=http://www.baidu.com”> 表示5秒鐘后,跳轉到百度網

          注意:刷新功能相當于瀏覽器中的刷新按鈕

          (3)設置網頁關鍵字(SEO優化),給搜索引擎(搜索機器人)使用

          <meta name=“keywords” content=“程序開發,平面設置,空間域名,網站維護”>

          (4)設置網頁描述信息(SEO優化)

          <meta name=“description” content=“廣州網站建設思優網絡公司,提供專業廣州網站制作及網站推廣相結合的建站方案,由專業廣州網站設計人員結合搜索引擎優化經驗為您設計網站;廣州網頁設計:020-87537332”>

          8.XHTML

          XHTML是可擴展超文本標注語言,XHTML是更純凈的HTML,語法更嚴格。

          XHTML的目的是為了取代HTML4.01。

          XHTML是W3C的一個標準或規范。

          編寫XHTML的規范,與HTML編寫有何不同?

          1)所有的標記都必須被關閉。比如:<br>轉換<br /> <hr>轉換后 <hr />

          2)XHTML要求所有的標記名稱必須小寫。比如:<meta><table><img><font>

          3)XHTML要求所有的屬性名必須小寫,屬性值必須加引號

          4)XHTML要求所有的屬性必須有值

          <hr noshade=noshade />

          <input type=radio checked=checked />

          5)所有的標記要順序嵌套,不能交叉嵌套;

          6)XHTML文件,必須要有DTD文檔類型定義;

          DTD(Document Type Define)文檔類型定義

          (1)嚴格型Strict

          要求HTML代中,不能存在任何的表現,用CSS去代替。比如:<font>、bgcolor、background等

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

          2)過渡型transitional

          可以使用任何表現的標記或屬性。

          <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

          (3)框架型Frameset

          制作框架網頁時使用的一種類型,框架主要用于網站的后臺管理。

          框架技術:是將一個瀏覽器窗口劃分成不同區域,每個區域(窗口)都可以顯示一個獨立的網頁。(HTML第四天單獨講框架,現在作個了解

          9.W3C簡介

          W3C是萬維網聯盟,是一個國際性的非盈利性組織,是WEB領域最具權威性的組織。已經制定多達200多項的標準。

          比如:XHTML、CSS、ECMAScript(JavaScript)、DOM、 XML等。

          10.超級鏈接

          超級鏈接的功能:就是點擊某個鏈接,可以跳轉到目標頁面或文件。

          超級鏈接的分類:

          (1)按內容分類:文本鏈接、圖片鏈接、多媒體等

          (2)按URL分類:相對URL、絕對URL、錨點

          URL,指網址或路徑

          URL(Uniform Resource Locator,統一資源定位器),也就是指互聯網地址。

          http://www.sina.com.cn/about/index.html

          第一個部分:協議,指訪問什么類型的服務器,如:http://FTP://news://

          第二個部分:主機名或主機的IP地址。如:www.sina.com.cn

          第三個部分:文件夾名,如:about

          第四個部分:文件名,如:index.html

          11.<a></a>超級鏈接的標記

          格式:<a 屬性=“屬性值”>新浪網</a>

          常用的屬性:

          Href:指鏈接的目標文件或網址。比如:href=“http://www.toutiao.com”

          Target:指目標文件的打開方式。

          _blank:在新窗口中,來打開目標文件;

          _self:在當前窗口中,來打開目標文件;

          _top:在最頂層窗口中,來打開目標文件(在框架中講);

          _parent:在父窗口中,來打開目標文件(在框架中講)

          Name:設置錨點的名稱。錨點是指:鏈接到同一個頁面的不同部分

          舉例:<a href=http://www.toutiao.com target=“_blank”>頭條號</a>

          12.相對路徑和絕對路徑

          絕對URL:它總是以file:///協議開頭,去訪問目標文件。

          如果將當前文件移動到其它地方,這個絕對URL路徑不需要修改。

          絕對URL,只需要確定目標文件的路徑即可,與當前文件位置無關。

          例如:<a href=“file:///E:/itcast/20140510/lesson/day2/4.html”>本地絕對路徑</a>

          相對URL:要確定當前文件與目標文件的關系。

          關系分為三種:

          平級關系:直接寫目標文件的文件名即可。

          下級關系:也就是目標文件所在的文件夾與當前文件是平級關系,當前文件與目標文件是上下級關系。

          上級關系:目標文件位于上一層級。

          ../代表上一層文件夾

          ../../代表上二層文件夾

          ../../images/01.jpg

          提示:在制作網站時,一般使用的都是相對路徑。

          (3)下載鏈接:如果鏈接到的文件,網頁不能直接執行的話,都會出現下載提示。

          瀏覽器可以直接執行的文件:.gif、.jpg、.png、html、.htm、.mp3、.swf等

          (4)郵箱鏈接:mailto:beijing2000@126.com

          13.錨點鏈接:指鏈接到一個網頁的不同地方

          第一步:定義一個錨點或標記 <a name=“top”></a>

          第二步:鏈接到錨點或標記 <a href=“#top”>返回頂部</a>

          <a href=“intro.html#bottom”>鏈接到intro.html的底部</a>

          14.<img>圖片標記,單邊標記

          格式:<img 屬性=“屬性值” />

          常用的屬性:

          Src:指圖片的URL,可以是相對路徑,也可以是絕對路徑。

          Width:指圖片的寬度,單位px或%

          Height:指圖片的高度

          Align:圖片的水平對齊方式,取值:left center right ,leftright可以實現圖文混排

          Alt:如果圖片不存在時,顯示的提示信息

          Hspace:圖片左右的距離

          Vspace:圖片上下的距離

          舉例:<img src=“images/01.gif” width=“400” height=“300” alt=“寶寶圖片” />

          如果保證圖片在調整過程中不變形(等比例縮放):只需要設置widthheight其中一個即可,另一個會自動縮放。

          7月27日,我收到百度的面試邀約(8月1日),興奮之余,我也做了5天的面試準備。從下午兩點開始一直面試到五點半,長達三個半小時的面試也讓我知道百度確實是一家重視技術的公司。其中有一道面試題尤其讓我印象深刻,因為它分別是一面和二面的 “壓軸題”,可以說這道面試題自己回答的好與否直接決定著自己能否進入下一輪面試,今天我主要就從這道面試題開始,一步一步講解其中涉及到的知識點。這次的面經(四面)會在下一篇文章總結后分享給大家。

          面試真題

          真題:

          PHP 如何解決網站大流量與高并發的問題(一面最后一題)

          變體:

          網站高并發的優化方法,從瀏覽器到服務器中間經過所有組件的你能想到的優化點(二面最后一題)

          考點分析

          • 高并發架構相關概念
          • 高并發解決方案(優化方案)

          說明

          由于涉及到的知識點太多,我這里先給出我當時回答的總的結構,之后會對每個分點進行更為詳細的分析,如果你有更好的答案,或者有一些遺漏的點還請指出。


          高并發架構相關概念

          并發(百度百科的定義):

          并發,在操作系統中,是指一個時間段中有幾個程序都處于已啟動運行到運行完畢之間,且這幾個程序都是在同一處理機上運行,但任意時刻點上都只有一個程序在處理機上運行

          web開發中說的高并發指的是什么?

          上面的定義明顯不是我們通常所言的并發,在互聯網時代,所講的并發、高并發,通常是指并發訪問。也就是在某個時間點,有多少個訪問同時到來,通常如果一個系統的日 PV 在干萬以上,有可能是一個高并發的系統。

          高并發的問題,我們具體該關心什么?

          QPS:

          每秒鐘請求或者査詢的數量,在互聯網領域,指毎秒響應請求數(指 HTTP 請求),一個頁面中可能有多個 HTTP 請求。

          吞吐量:

          單位時間內處理的請求數量(通常由QPS與并發數決定)

          響應時間:

          從請求發出到收到響應花費的時間。例如系統處理一個 HTTP 請求需要 100ms,這個 100ms 就是系統的響應時間

          PV:

          綜合瀏覽量(Pageview),即頁面瀏覽量或者點擊量

          UV:

          獨立訪客(UniqueVisitor),即一定時間范圍內相同訪客多次訪問網站,只計算為 1 個獨立訪客

          帶寬:

          計算帶寬大小需關注兩個指標,峰值流量和頁面的平均大小

          • 日網站帶寬=PV/統計時間(換算到秒)* 平均頁面大小(單位 KB)* 8

          常用的壓測工具

          ApacheBench、WRK、http_load、Web bench、Siege、Apache Jmeter

          ApacheBench 概念

          ApacheBench(ab),是 Apache 官方推出的工具刨建多個并發訪問線程,模擬多個訪問者同時對某一 URL 地址進行訪問。它的測試目標是基于 URL 的,因此,它既可以用來測試 Apache 的負載壓力,也可以測試 Nginx、 Lighttpd、 Tomcat、IS 等其它 Web 服務器的壓力。

          ApacheBench 的使用

          模擬并發請求 1000次,總共請求 50000次

          ab -c 1000 -n 50000 www.test.com

          注意事項

          • 測試機器與被測試機器分開
          • 不要對線上服務做壓力測試
          • 觀察測試工具 ab 所在機器,以及被測試的前端機的 CPU,內存,網絡等都不超過最高限度的 75% (top 命令)

          高并發解決方案(優化方案)

          流量層優化:

          • 防盜鏈處理

          前端層優化:

          • 減少 HTTP 請求
          • 添加異步請求
          • 啟用瀏覽器緩存和文件壓縮
          • CDN 加速
          • 建立獨立圖片服務器

          服務器層優化:

          • 頁面靜態化
          • 并發處理

          數據庫層優化:

          • 數據庫緩存(Memache, Redis)
          • 分庫分表(水平、垂直切分)、分區操作
          • 讀寫分離
          • 負載均衡

          Web 服務器架構優化:

          • 負載均衡

          流量層優化(防盜鏈處理)

          如果我們發現我們的網站主頁的流量很大(服務器負荷很重)但是網站的 PV、UV 卻很小,這時候我們就需要考慮我們的網站是不是被盜鏈了。

          盜鏈概念

          盜鏈是指在自己的頁面上展示一些并不在自己服務器上的內容獲得他人服務器上的資源地址,繞過別人的資源展示頁面,直接在自己的頁面上向最終用戶提供此內容,常見的是小站盜用大站的圖片、音樂、視頻、軟件等資源,通過盜鏈的方法可以減輕自己服務器的負擔,因為真實的空間和流量均是來自別人的服務器。

          防盜鏈概念

          防止別人通過一些技術手段繞過本站的資源展示頁面,盜用本站的資源,讓繞開本站資源展示頁面的資源鏈接失效,可以大大減輕服務器及帶寬的壓力。

          工作原理

          通過 Referer 或者簽名,網站可以檢測目標網頁訪問的來源網頁,如果是資源文件,則可以跟蹤到顯示它的網頁地址。一旦檢測到來源不是本站即進行阻止或者返回指定的頁面。

          Referer 方式防盜鏈

          Nginx 模塊 ngx_http_referer_module 用于阻擋來源非法的域名請求。

          配置

          location ~ .*\.(gifljpglpnglflvlswfrarlzips)${

          valid_referers none blocked test.com * test.com:

          if($invalid_referer){

          #return 403:

          rewrite ^/ http://www.test.com/403.jpg;

          }

          }

          valid_referers none I blocked I server_names,string

          解釋

          • none: "Referer" 來源頭部為空的情況
          • blocked: "Referer" 來源頭部不為空,但是里面的值被代理或者防火墻刪除了,這些值都不以 http:// 或者 https:// 開頭。
          • server names: "Referer" 來源頭部包含當前的 server names

          加密簽名防盜鏈

          Referer 這種方式雖然可以防止一下低中級的防盜鏈,但是更高級的盜鏈往往可以偽造 Referer,從而繞過 Referer 檢測,更安全的方式是可以采用加密簽名解決 。

          使用第三方模塊 HttpaccesskeyModule 實現 Nginx 防盜鏈

          Nginx 配置:

          accesskey on off 模塊開關

          accesskey_hashmethod md5 | sha-1 簽名加密方式

          accesskey_arg GET 參數名稱

          accesskey signature 加密規則

          location ~ .*\.(gifljpglpnglflvlswfrarlzips)${

          accesskey on;

          accesskey_hashmethod md5;

          accesskey_arg sign;

          accesskey_signature"yourPrefix$remote_addr; # 你的前綴碼和客戶端 IP

          }

          PHP 代碼段:

          $sign=md5('yourPrefix'. $_SERVER['remote_addr'];

          echo '<img src=”./youimage.png?sign=. $sign.'">';


          前端層優化

          減少 HTTP 請求

          性能黃金法則:

          只有 10% - 20% 的最終用戶響應時間花在接收請求的 HTML 文檔上,剩下的 80% - 90% 時間花在 HTML 文檔所引用的所有組件(圖片,腳本,CSS,Flash 等等)進行的 HTTP 請求上。

          如何改善:

          改善響應時間的最簡單途徑就是減少組件數量,并由此減少 HTTP 請求的數量。

          減少 HTTP 請求的方式

          圖片地圖

          圖片地址允許你在一個圖片上關聯多個 URL,目標 URL 的選擇取決于用戶單擊了圖片上的哪個未知。

          • 將五張圖片合并為一張圖片,然后以位置信息定位超鏈接,把五個 HTTP 請求減少為一個,可以保證設計的完整性和功能的齊全性
          • 使用 標簽

          CSS 精靈(CSS Sprites)

          Sprites 中文翻譯為 CSS 精靈,通過使用合并圖片,通過指定 CSS 的 background-image 和 background-position 來顯示元素。

          合并腳本和樣式表

          1. 使用外部的 JS 和 CSS 文件引用的方式,因為這要比直接寫在頁面中性能更好一點
          2. 獨立的一個 JS 比用多個 JS 文件組成的頁面載入要快 38%
          3. 把多個腳本合并為一個腳本,把多個樣式表合并為一個樣式表

          圖片使用 Base64 編碼減少頁面請求數

          采用 Base64 的編碼方式將圖片直接嵌入到網頁中,而不是從外部載入。

          添加異步請求

          Ajax 可以實現動態不刷新(局部刷新),就是能在不更新整個頁面的前提下維護數據。這使得 Web 應用程序更為迅捷地回應用戶動作,并避免了在網絡上發送那些沒有改變過的信息。

          優勢:

          • 通過異步模式,提升了用戶體驗
          • 優化了瀏覽器和服務器之間的傳輸,減少不必要的數據往返,減少了帶寬占用
          • Ajax 引擎在客戶端運行,承擔了一部分本來由服務器承擔的工作,從而減少了大用戶量下的服務器負載

          啟用瀏覽器緩存和文件壓縮

          緩存分類:

          HTTP 緩存模型中,如果請求成功會有三種請款

          1. 200 from cache:直接從本地緩存中獲取響應,最快速,最省流量,因為根本沒有向服務器發送請求
          2. 304 Not Modified:協商緩存,瀏覽器再本地沒有命中的情況下請求頭中發送一定的校驗數據到服務端,如果服務端數據沒有改變瀏覽器從本地緩存響應,返回304,快速,發送的數據很少。只返回一些基本的響應頭信息,數據量很小,不發送實際響應體
          3. 200 OK:以上兩種緩存全部失敗,服務器返回完整響應,沒有用到緩存,相對最慢

          本地緩存

          瀏覽器認為本地緩存可以使用,不會去請求服務端

          相關 Header:

          • Expires:expires 值對應一個形如 Thu,32 Dec 2037 23:55:55 GMT 的格林威治時間,告訴瀏覽器緩存實現的時刻,如果還沒到該時刻,標明緩存有效,無需發送請求(絕對時間)
          • Cache-Control(設置緩存秒數):運用 Cache-Control 告知瀏覽器緩存過期的時間間隔不是時刻(時間間隔)
          • no-store:禁止瀏覽器緩存響應
          • no-cache:不允許直接使用本地緩存,先發起請求和服務器協商
          • max-age=delta-seconds:告知瀏覽器該響應本地緩存有效的最長期限,以秒為單位

          協商緩存

          當瀏覽器沒有命中本地緩存,如本地緩存過期或者響應中聲明不允許直接使用本地緩存,那么瀏覽器肯定會發起服務端請求,服務端會驗證數據是否修改,如果沒有通知瀏覽器使用本地緩存

          相關 Header:

          1. Last-Modified:通知瀏覽器資源的最后修改時間
          2. If-Modified-Since:得到資源的最后修改時間后,會將這個信息通過 If-Modified-Sinc 提交到服務器做檢查,如果沒有修改,返回 304 狀態碼
          3. Etag:HTTP1.1 推出,文件的指紋標識符,如果文件內容修改,指紋會改變
          4. If-None-Match:本地緩存失效,會攜帶此值去請求服務端,服務端判斷該資源是否改變,如果沒有改變,直接使用本地緩存,返回 304

          適合緩存的內容

          1. 不變的圖像,如 logo,圖標等
          2. JS、CSS 靜態文件
          3. 可下載的內容,媒體文件

          建議使用協商緩存

          1. HTML 文件
          2. 經常替換的圖片
          3. 經常修改的 JS、CSS 文件
          4. JS、CSS 文件的加載可以加入文件的簽名來拒絕緩存
          5. index.css? 簽名

          不建議緩存的內容

          1. 用戶隱私等敏感數據
          2. 經常改變的 API 數據接口

          前端代碼和資源的壓縮

          優勢:

          讓資源文件更小,加快文件再網絡中的傳輸,讓網頁更快的展現,降低帶寬和流量開銷

          壓縮方式:

          JS、CSS、圖片、HTML 代碼的壓縮、Gzip 壓縮

          JavaScript 代碼壓縮:

          • JavaScript 壓縮的原理一般是去掉多余的空格和回車、替換長變量名、簡化一些代碼寫法等
          • JavaScript 代碼壓縮工具很多,有在線工具,有應用程序,有編輯器插件

          CSS 代碼壓縮:

          • 原理跟 JavaScript 壓縮原理類似,同樣是去除空白符、注釋并且優化一些 CSS 語義規則等

          使用 CDN 加速

          CDN 的全稱是 Content Delivery Network, 即內容分發網絡,盡可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快,更穩定。

          • 在網絡各處放置節點服務器所構成的在現有的互聯網基礎之上的一層智能虛擬網絡
          • CDN 系統能夠實時地根據網絡流量和各節點的連接、負載狀況以及到用戶的距離和響應實踐等綜合信息將用戶的請求重新導向離用戶最近的服務器節點上。

          使用 CDN 的優勢

          • 本地 cache 加速, 提高企業站點(尤其含有大量圖片和靜態頁面站點)的訪問速度
          • 跨運營商的網絡加速, 保證不同網絡的用戶都得到良好的訪問質量
          • 遠程訪問用戶根據 DNS 負載均衡技術智能自動選擇 cache 服務器
          • 自動生成服務器的遠程 Mirror(鏡像)cache 服務器,遠程用戶訪問時從 cache 服務器上讀取數據,減少遠程訪問的帶寬、分擔網絡流量、減輕原站點 Web 服務器負載等功能。

          建立獨立的圖片服務器

          好處

          • 分擔 Web 服務器的 I/O 負載將耗費資源的圖片服務分離出來,提高服務器的性能和穩定性
          • 能夠專門對圖片服務器進行優化-為圖片服務設置有針對性的緩存方案,減少帶寬成本,提高訪問速度
          • 提高網站的可擴展性-通過增加圖片服務器,提高圖片吞吐能力

          服務器層優化

          頁面靜態化(動態語言靜態化)

          將現有 PHP、Python 等動態語言的邏輯代碼生成為靜態 HTML 文件,用戶訪問動態腳本重定向到靜態 HTML 文件的過程

          使用場景

          對實時性要求不高的頁面

          好處

          • 動態腳本通常會做邏輯計算和數據查詢,訪問量越大,服務器壓力越大
          • 訪問量大時可能會造成 CPU 負載過高,數據庫服務器壓力過大

          PHP 的并發處理

          PHP 的 Swoole 擴展

          PHP 的異步、并行、高性能網絡通信引擎,使用純 C 語言編寫,提供了 PHP 語言的異步多線程服務器,異步 TCP/UDP 網絡客戶端,異步 MYSQL,異步 Redis,數據庫連接池,Asynctask,消息隊列,毫秒定時器,異步文件讀寫,異步 DNS 查詢,除了異步 I/O 的支持之外, Swoole 為 PHP 多進程的模式設計了多個并發數據結構和 IPC 通信機制,可以大大簡化多進程并發編程的工作。

          消息隊列

          使用場景

          用戶注冊:

          • 場景說明
          • 用戶注冊后,需要發注冊郵件和注冊短信
          • 串行方式
          • 將注冊信息寫入數據庫成功后,發送注冊郵件,再發送注冊短信
          • 并行方式
          • 將注冊信息寫入數據庫成功后,發送注冊郎件的同時發送注冊短信
          • 消息隊列方式
          • 將注冊信息寫入數據庫成功后,將成功信息寫入隊列,此時直接返回成功給用戶,寫入隊列的時間非常短,可以忽略不計,然后異步發送郵件和短信

          日志處理:

          • 應用場景
          • 解決大量日志的傳輸,日志采集程序將程序寫入消息隊列,然后通過日志處理程序的訂閱消費日志

          常見消息隊列產品

          Kafka、 Activemq、 Zeros、 Rabbitmq、 Redis 等


          數據庫層優化

          數據庫緩存(Memache, Redis)

          MySQL 等一些常見的關系型數據庫的數據都存儲在磁盤當中,在高并發場景下,業務應用對 MySQL 產生的增、刪、改、查的操作造成巨大的 I/O 開銷和查詢壓力,這無疑對數據庫和服務器都是一種巨大的壓力,為了解決此類問題,緩存數據的概念應運而生。

          優點:

          • 極大地解決數據庫服務器的壓力
          • 提高應用數據的響應速度

          使用 Memcache 緩存查詢數據

          對于大型站點,如果沒有中間緩存層,當流量打入數據庫層時,即便有之前的幾層為我們擋住一部分流量,但是在大并發的情況下,還是會有大量請求涌入數據庫層,這樣對于數據庫服務器的壓力沖擊很大,響應速度也會下降,因此添加中間緩存層很有必要。

          工作原理

          Memcache 是一個高性能的分布式的內存對象緩存系統,通過在內存里維護一個統一的巨大的 hash 表,它能夠用來存儲各種格式的數據,包括圖像、視頻、文件以及數據庫檢索的結果等。簡單的說就是將數據調用到內存,然后從內存中讀取,從而大大提高讀取速度

          使用 Redis 綬存查詢數據

          Memcache 的區別:

          • Redis 支持(快照、AOF),依賴快照進行持久化,aof增強了可靠性的同時,對性能有所影響
          • Memcache 不支持持久化,通常做緩存,提升性能
          • Redis 支持多種類的數據類型
          • Redis 用于數據量較小的高性能操作和運算上
          • Memcache 用于在動態系統中減少數據庫負載,提升性能,適合做緩存,提高性能

          數據表數據類型優化

          • tinyint (0-255) smallint, bigint(考慮空間的問題,考慮范圍的問題)
          • char,vachar
          • enum 特定、固定的分類可以使用 enum 存儲,效率更快
          • IP 地址的存儲,用 PHP 的 ip2long('192.168.1.38'); //3232235814

          索引優化

          • 索引不是越多越好,在合適的字段上創建合適的索引
          • 復合索引的前綴原則
          • lke 查詢 % 的問題(% 在前如:%name 則索引失敗)
          • 全表掃描優化(MySQL 自動識別)
          • or 條件索引使用情況(or 后的索引不會使用)
          • 字符串類型索引失效的問題(如字符串類型的字段必須要加引號查詢)

          SQL 語句的優化

          使用慢查詢日志找到需要優化的 SQL 語句,一般會再用 explain 分析。

          • 優化查詢過程中的數據訪問
          • 使用 Limit
          • 返回列不用 *
          • 優化特定類型的查詢語句
          • 優化關聯查詢
          • 優化子查詢
          • 優化 Group by 和 distinct

          數據庫服務器架構的優化

          • 分庫分表
          • 水平切分
          • 垂直切分
          • 讀寫分離
          • 負載均衡
          • 通過 LVS 的三種基本模式實現負載均衡
          • My Cat 數據庫中間件實現負載均衡

          Web 服務器架構優化

          七層負載均衡的實現

          • 基于 URL 等應用層信息的負載均衡
          • Nginx 的 proxy 是它一個很強大的功能,實現了7層負載均衡

          Nginx 的簡單配置

          Nginx 配置

          http{

          upstream test_cluster {

          server 121.41.68.2:8001 weight=11;// 加權中

          server 121.41.69.2:8002 weight=10;

          #server 121.41.68.2:8003;

          #server 121.41.68.9;

          }

          server {

          listen 80;

          location / {

          proxy_pass http: //test_cluster;

          }

          }

          }

          四層負載均衡的實現

          • 通過報文中的目標地址和端口,再加上負載均衡設備設置的服務器選擇方式,決定最終選擇的內部服務器
          • LVS 實現服務器集群負載均衡有三種方式,NAT,DR 和 TUN

          參考資料

          • AJAX 筆試面試題匯總
          • 李捷的全面解讀 PHP 面試

          主站蜘蛛池模板: 夜夜添无码一区二区三区| 精品久久久中文字幕一区| 中文字幕久久亚洲一区| 国产在线视频一区二区三区98| 自慰无码一区二区三区| 精品亚洲AV无码一区二区 | 中文字幕AV一区二区三区| 无码AⅤ精品一区二区三区| 伊人久久精品无码麻豆一区| 精品国产AⅤ一区二区三区4区| 久久国产视频一区| 一区二区三区免费高清视频| 国内自拍视频一区二区三区| 骚片AV蜜桃精品一区| 末成年女AV片一区二区| 日韩精品无码一区二区三区| 久草新视频一区二区三区| 久久综合九九亚洲一区| 日韩人妻无码一区二区三区99| 中文字幕一区二区精品区| 国产成人无码一区二区三区| 国产精品无圣光一区二区| 91国偷自产一区二区三区| 国产亚洲综合一区二区三区| 波多野结衣的AV一区二区三区| 国产精品视频第一区二区三区| 国产一区二区三区在线免费 | 亚洲一区二区观看播放| 久久一区二区三区精华液使用方法 | 91福利视频一区| 无码av人妻一区二区三区四区| 日本片免费观看一区二区| 亚洲国产系列一区二区三区| 免费无码A片一区二三区| 国产伦精品一区二区三区精品 | 久久综合九九亚洲一区| 无码国产精品一区二区免费虚拟VR| 亚洲av不卡一区二区三区| 国内自拍视频一区二区三区| 国产福利一区视频| 精品aⅴ一区二区三区|