網站性能優化

基本概念

  1、網站吞吐量:TPS/每秒的事務數,QPS/每秒的查詢數,HPS/每秒的HTTP請求數

  2、服務器性能指標:系統負載,內存使用,CPU使用,磁盤使用以及網絡I/O等

前端優化方法

  1、減少HTTP請求:通過將多個前端資源合并成一個實現減少HTTP請求提高性能。

  2、設置響應頭字段是部分及時性要求不高的靜態資源在緩存在前端瀏覽器中。

  3、啟用傳輸壓縮。例如gzip。

  4、合理的布局前端代碼結構,css,html,js代碼的順尋由上至下。

  5、對于一些可公開訪問的資源,可以通過設置其他的域名的方式減少傳輸過程中的cookie。

  6、使用CDN分發,將靜態資源部署在各大網絡運營商的機房中,這樣子用戶就可以非常快的就近獲得資源。

  7、使用反向代理將熱門內容,靜態資源或者一些可被緩存的計算結果緩存在代理服務器中。通過配置代理服務器可以實現代理服務器直接轉發被緩存的資源。

后端優化方法

  1、使應用服務器實現無狀態,將會話信息存儲在緩存服務器集群中,這樣每臺應用服務器之間就可以被相同的對待。就可以通過增加服務器數量的方法水平擴展整個系統的吞吐量。

  2、選擇合理的緩存策略,只緩存對于業務而言及時性要求不高,且訪問量大的數據,選取合適的緩存命中算法,減少增加服務器或者服務器宕機對于應用的影響。

  3、緩存防御策略,將可預見的但是并不存在的數據緩存下來,防止惡意攻擊連續對緩存發起該資源的請求導致最終請求壓在數據庫上面。

  4、使用消息隊列實現網站的異步處理。對于某些接口調用需要花費很長的時間,可以通過一個消息隊列來實現生產者消費者模式,每一個模塊既可以是消費者也可以是生產者。但是消息隊列也有一定的確定,需要增加額外的機制來保證事務性,例如通過一張表來記錄消息的消費記錄和消費結果來實現事務最終的一致。

  5、對各種資源費復用來減少創建資源時的時間和性能開銷,例如使用數據庫連接池和線程池。

  6、提高代碼邏輯和代碼中數據的數據結構的合理性以及優化算法提高應用程序的處理時間。

  7、硬件上采用更加優秀(快)的硬件。

總結

  上面寫的哪些優化方法對于一個中大型的網站而言,算是一個非常普遍的解決方案了,但是落實到不同的業務,會有自己的實現方式,這里的實現方式指的是不同的方案組合和對應的技術實現方式。舉個形象點的例子,有些網站不需要前端再加一個CDN,有些網站不需要加緩存服務器集群,有些業務使用JMQ實現消息隊列,有些使用redis緩存消息實現消息隊列,對于事務性的保證,也不一定通過數據庫鎖或者線程同步來實現,也可以通過增加額外的存儲結構來記錄鎖,鎖只是一種概念,我們可以選擇編程語言自帶的方式也可以用數據結構去描述一把鎖。

轉載于:https://www.cnblogs.com/firstdream/p/7781775.html

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

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

相關文章

JAVA-容器(2)-Collection

(基于JDK1.8源碼分析) 一,Collection 所有實現Collection接口的類原則上應該提供兩種構造函數: 【1】無參構造-創建一個空的容器 【2】有參構造-創建一個新的Collection,這個新的Collection和傳入的Collection具有相同…

軟件測試工具LoadRunner中如何定義SLA?--轉載

軟件測試工具LoadRunner中如何定義SLA? 瀏覽:2242|更新:2017-04-09 22:50SLA 是您為負載測試場景定義的具體目標。Analysis 將這些目標與軟件測試工具LoadRunner在運行過程中收集和存儲的性能相關數據進行比較,然后確定目標的 SLA…

最近閱讀20171106

java面試題 線上服務內存OOM問題定位三板斧 JVM的GC ROOTS存在于那些地方 mysql innodb怎樣做查詢優化 ----未閱讀 JAVA CAS原理深度分析----未閱讀 轉載于:https://www.cnblogs.com/Tpf386/p/7793248.html

LinuxI2C驅動--從兩個訪問eeprom的例子開始

本小節介紹兩個在linux應用層訪問eeprom的方法,并給出示例代碼方便大家理解。第一個方法是通過sysfs文件系統對eeprom進行訪問,第二個方法是通過eeprom的設備文件進行訪問。這兩個方法分別對應了i2c設備驅動的兩個不同的實現,在后面的小結會詳…

Cookie詳解整理

1.Cookie的誕生 由于HTTP協議是無狀態的,而服務器端的業務必須是要有狀態的。Cookie誕生的最初目的是為了存儲web中的狀態信息,以方便服務器端使用。比如判斷用戶是否是第一次訪問網站。目前最新的規范是RFC 6265,它是一個由瀏覽器服務器共同…

驍龍820和KryoCPU:異構計算與定制計算的作用 【轉】

本文轉載自:https://www.douban.com/group/topic/89037625/ Qualcomm驍龍820處理器專為提供創新用戶體驗的頂級移動終端而設計。為實現消費者所期望的創新,移動處理器必須滿足日益增長的計算需求且降低功耗,同時還要擁有比以往更低的溫度&…

LNMP

準備工作 建立一個軟件包目錄存放 mkdir -p /usr/local/src/ 清理已經安裝包 rpm -e httpd rpm -e mysql rpm -e php yum -y remove httpd yum -y remove mysql yum -y remove php #搜索apache包 rpm -qa http* #強制卸載apache包 rpm -e --nodeps 查詢出來的文件名 #檢查是否卸…

算法復習——計算幾何基礎(zoj1081)

題目: Statement of the Problem Several drawing applications allow us to draw polygons and almost all of them allow us to fill them with some color. The task of filling a polygon reduces to knowing which points are inside it, so programmers have …

亞馬遜Rekognition發布針對人臉檢測、分析和識別功能的多項更新

今天亞馬遜Rekognition針對人臉檢測、分析和識別功能推出了一系列更新。這些更新將為用戶帶來多項能力的改今,包括從圖像中檢測出更多人臉、執行更高精度的人臉匹配以及獲得圖像中的人臉得到更準確的年齡、性別和情感屬性。Amazon Rekognition的客戶可以從今天開始使…

(轉)CentOS分區操作詳解

CentOS分區操作詳解 原文:http://blog.csdn.net/yonggeit/article/details/77924393 磁盤分區 分區格式的兩種選擇:MBR和GPT 分區命令: parted的操作都是實時生效的,小心使用,主要是用于大于2T硬盤,支持MBR…

linux驅動中地址空間轉換

在linux kernel 中,物理地址是不能直接使用的,必須通過轉換才可以。轉換分為兩種, 靜態和動態。 靜態就是下面那種,不過,靜態的地址轉換,還需要在kernel 初始化的時候作映射。 動態映射是使用 ioremap 函…

getClass()和.class的區別

getClass()和.class的區別 在學習反射時想到了這個問題,.getClass()和.class有沒有什么區別? 當然,最明顯的區別就是.getClass()是一個對象實例的方法,只有對象實例才有這個方法,具體的類是沒有的。類的Class類實例是通…

華為敏捷 DevOps 實踐:產品經理如何開好敏捷回顧會議

開篇小故事:前幾年,一本叫《沉思錄》的書在國內突然曝光度很多,因為前某國家領導人“擺案頭,讀百遍”。《沉思錄》是古羅馬皇帝馬可奧勒寫給自己的書,內容大部分是在鞍馬勞頓中寫的。其實有一句“我們所聽到的不過只是…

斐波那契數列的鬼畜的性質

斐波那契數列的鬼畜的性質 斐波那契數列定理1 \(gcd(f[i],f[i1])1\) 利用輾轉相減法 證明:\(gcd(f[i],f[i1])\)\(gcd(f[i1]-f[i],f[i])\)\(gcd(f[i-1],f[i])\)\(....\)\(gcd(f[1],f[2])1\) 斐波那契數列定理2 \(f[mn]f[m-1]f[n]f[m]f[n1]\) 證明:\(f[mn]…

xml與java對象轉換 -- XStreamAlias

XStreamAlias使用 一、 特點: 簡化的API; 無映射文件; 高性能,低內存占用; 整潔的XML; 不需要修改對象;支持內部私有字段,不需要setter/getter方法 提供序列化接口; 自定義轉換類型策略; XStream的優點很多,但是也有一些小bug,比如在定義別名中的下劃線…

windows下安裝zabbix_agent

Server端在linux系統上,server端版本為2.2.6,是以前就裝好的已經跑了很久的穩定版。目前的需求是要將新業務的服務器添加到該監控隊列。而這些服務器是windows系統。 第一次下載了最新版的zabbix_agent for windows。按照正常程序安裝完成后,…

JS和Jquery獲取和修改label的值

獲取值: label標簽在JS和Jquery中使用不能像其他標簽一樣用value獲取它的值: var labeldocument.getElementById("id");var valuelabel.value;var value$("#id").val();可以這樣:JS: var labeldocument.getElementById(&…

Linux內核訪問外設I/O--動態映射(ioremap)和靜態映射(map_desc)

本篇文章主要介紹了"Linux內核訪問外設I/O--動態映射(ioremap)和靜態映射(map_desc)",主要涉及到Linux內核訪問外設I/O--動態映射(ioremap)和靜態映射(map_desc)方面的內容,對于Linux內核訪問外設I/O--動態映射(ioremap)和靜態映射(map_desc)感…