① html,css,php之間是什麼關系啊
html於css和php沒有絕對的關系!
也就是說,html不見得一定需要css或者php
但php就一定有html,一般來說!
因為伺服器端語言php最終編譯成客戶端html
② 緩存策略的選擇
適合緩存的內容
1. 不變的圖像襲啟,如logo,圖標等
2. js、css靜態文件
3. 可下載的內容,媒體文件
適合協商緩存
1. HTML文件
2. 經常替換的圖片
3. 經常修改的js、css文件,js、css文件的載入可以加入文件的簽名來拒絕緩存,如『index.css?簽名』,『index.簽名.js』
不建議緩存的內容
1. 用戶隱私等敏感數據
2. 經常改變的API數據介面
NGINX配置緩存策略
本地緩存配置
1. add_header指令:添加狀態碼為2XX和3XX的響應頭信息,設置代碼add_header name value [always];,可以設置Pragma、Expires、Cache-Control,可以繼承
2. expires指令:通知瀏覽器過期時長,設置代碼expires time;
3. Etag指令:指定簽名,設置代碼etag on|off,默認on
前端代碼和資源壓縮
優勢
1. 讓資源文件更小,加快文件在網路中的傳輸,讓網頁更快的展現,降低帶寬和流量的開銷
壓縮方式
1. js、css、圖片、html代碼的壓縮
2. gzip壓縮
gzip配置
gzip on|off; #是否開啟gzipgzip_buffers 32 4K|16 8K; #緩沖(在內存中緩存幾塊?每塊多大)gzip_comp_level [1-9] #推薦6,壓縮級別(級別越高,壓得越小,越浪費CPU計算資源)
gzip_disable #正則匹配UA,什麼樣的Uri不進行gzip
gzip_min_length 200 #開始壓縮的最小長度
gzip_http_version 1.0|1.1 #開始壓縮的http協議版本
gzip_proxied #設置請求者代理伺服器,該如何緩存內容
gzip_types text/plain application/xml image/png #對哪些類型的文件壓縮,如txt、xml、css
gzip_vary on|off #是否傳輸gzip壓縮標志
CDN加速
定義
1. CDN的全稱content delivery network,內容分發網路
2. 盡可能避開互聯網上有可能影響數據傳輸速度和穩定性的瓶頸和環節,使內容傳輸的更快、更穩定
3. 在網路各處放置節點伺服器所構成的有的互聯網基礎之上的一層智能虛擬網路
4. CDN系統能夠實現地根據網路流量和各節點的連接、負載狀況以及到用戶距離和響應時間等綜合信息將用戶的請求重新告禪洞導向離用戶最近的服務節點上
優勢
1. 本地cache加速,提高了企業站點(尤其含有大量圖片和靜態頁面站點)的訪問速度
2. 跨運營商的網路加速,保證不同網路的用戶都能得到良好的訪問質量
3. 遠程訪問用戶根據DNS負載均衡技術只能選擇cache伺服器
4. 自動生成伺服器襪枯的遠程Mirror(鏡像)cache伺服器,遠程用戶訪問時從cache伺服器上讀取數據,減少遠程訪問的帶寬、分擔網路流量、減輕原站點web伺服器負載等功能
5. 廣泛分布的cdn節點加上節點之間的智能冗餘機制,可以有效地預防黑客入侵
工作原理
1. 用戶發起請求
2. 智能DNS的解析(根據IP判斷地理位置、接入網類型、選擇路由最短和負載最輕的伺服器)
3. 取得緩存伺服器ip
4. 把內容返回給用戶(如果緩存中有,沒有就執行5、6、7)
5. 向源站發起請求
6. 將結果返回給用戶
7. 將結果存入緩存伺服器
適用場景
1. 站點或者應用中大量靜態資源的加速分發,例如css、js、圖片和HTML
2. 大文件下載
3. 直播網站
獨立圖片伺服器
必要性
1. 分擔web伺服器的I/O負載,將耗費資源的圖片伺服器分離出來,提高伺服器的性能和穩定性
2. 能夠專門對圖片伺服器進行優化,為圖片伺服器設置針對性的緩存方案,減少帶寬成本,提高訪問速度
3. 提高網站的可擴展性,通過增加圖片伺服器,提高圖片吞吐能力
採用獨立域名
原因:
1. 同一域名下瀏覽器的並發連接數有限制,突破瀏覽器連接數的限制
2. 由於cookie的原因,對緩存不利,大部分web cache都只緩存不帶cookie的請求,導致每次的圖片請求都不能命中cache
如何圖片上傳和同步
1. NFS共享方式
2. 利用FTP同步
動態語言靜態化
將現有的PHP等動態語言的邏輯代碼生成為靜態的HTML文件,用戶訪問動態腳本重定向到靜態HTML文件的過程。對實時性要求不高
原因:
1. 動態腳本通過會做邏輯計算和數據查詢,訪問量越大,伺服器壓力越大
2. 訪問量大時可能會造成CPU負載過高,資料庫伺服器壓力過大
3. 靜態化可以減低邏輯處理壓力,降低資料庫伺服器查詢壓力
實現方法
1. 使用模板引擎
2. 利用ob系列函數
需要獲取swoole、workerman、TP、laravel、vue、Linux、redis以及性能優化,並發項目實戰,微服務 架構方面的資料,可以私信我哦