著移動端的發展流量入口也越來越偏向移動,如果你的網站打開速度慢會增加用戶等待時間大大違背了用戶體驗的原則,而頁面加載速度逐漸被各大搜索引擎納入搜索排名的因素之一,百度在去年的閃電算法中也明確表示移動端首屏的加載速度將會直接影響搜索排名。
加載速度可以理解,在特定的頁面上顯示出所有內容的時間,從瀏覽器的角度是從第一個字節接收信息所需要的時間。研究表明,大部分搜索引擎會專門測量第一個字節的加載時間,緩慢的加載速度影響搜索引擎分配抓取的權限,從而導致索引頁面過少【比如說:現實生活中我們要拿一個水杯,如果的此時你的水杯放在在桌上你順手可以拿到,如果你放在抽屜里,此時需要你打開抽屜才能拿到,所以放在桌上的水杯比較方便減少了你拿的時間,提高了的你的用戶體驗】更多的干貨也可以在手機微信框搜索:樂建網創軍團,去關注樂建
那些因素會影響到網站加載速度:高清圖片,彈窗類廣告,虛擬主機與服務器相關基礎設置,視頻,未優化的程序插件與編碼,主題模板的相關設計,我們知道影響網站加載速度后怎么解決這些問題呢?
1、開啟MIP
百度對于MIP的描述:使用MIP無需等待加載,頁面內容將以更友好的方式瞬時到達用戶,如果你還未建站建議新站初期就開始采用MIP,否則后期改版相對麻煩,mip的改造方法。
2、CDN
cdn并沒有從根本上解決頁面加載速度的問題,而是通過云加速,將頁面緩存到最快的訪問節點,從而提高了頁面加載速度,這對于技術薄弱的站長是個福利,同時國內的cdn服務商很多,如果你是依托百度搜索的,還是建議大家使用百度云加速,畢竟百度對自家的產品有一定的扶持。
3、網站的空間線路
沒這個前提,就算你網站做的再好,內容再少,服務器多強,打開需要半天沒的說,還有可能經常出現打不開的現象,所以,要像網站打開的快,我們就得把這個地基打好,下面樓需要建多少層才好說話。通常我們常用的有電信,網通,或雙線路,三線路。無論你選了那種,都要好要快就行了。
4、網站需要全站靜態化生成
就是頁面的后綴是.html或.php等其它的,為什么這樣說呢?你想一下,一般動態的網站,打開頁面是,首先他就必須去讀取數據庫的資料,然后在顯示到頁面上,走了個彎路,并還有數據庫訪問的速度和數據庫數據多少,數據庫的大小所決定。你想不慢都難,靜態頁面就不同了,它不需要訪問數據庫,因為它在生成出來時就已通過讀取數據庫的資料,資料生成出一個頁面來了,走的是直路,想不快都難;
5、壓縮或精簡Javascript代碼和css代碼
無論什么類型的網站,用戶第一次點擊網站的時候,都會加載網站的Javascript和css代碼,假設這些代碼冗多,勢必會降低網站打開速度。
如果有這樣的問題,就要對代碼進行壓縮或精簡。壓縮方面,有大量的第三方工具如站長之家的CSS\JS壓縮工具可供大家直接免費試用,經過壓縮的代碼,普遍能減小40%到65%。精簡方面,能用一個樣式控制就不用兩個,思路是既能滿足網站的頁面布局,又是最小的代碼量。
6、減少HTTP請求數
用戶在打開一個網頁的時候,后臺程序響應用戶所需的時間并不多,用戶等待的時間主要花費在下載網頁元素上了,即HTML、CSS、JavaScript、Flash、圖片等,統計顯示,每增加一個元素,網頁載入的時間就增加25-40毫秒(取決于用戶的帶寬情況)。所以,想要提高網頁打開速度,就要減少HTTP請求數,方法有3種:
1)、減少不必要的HTTP請求
例如用CSS圓角代替圓角圖片,減少圖片的使用。
2)、合并文件
對于文本文件,可以直接合并內容。例如將多個JS(JavaScript的簡稱)文件合并成一個,將多個CSS文件合并成一個。
3)、優化緩存
對于沒有變化的網頁元素(如頁頭、頁尾等),用戶再次訪問的時候沒有必要重新下載,直接從瀏覽器緩存里讀取就可以了。
7、服務器端的緩存設置
假設用戶第一次訪問了你的網站,那么用戶下一次再次訪問你的站點,速度就會更快。這是什么原因呢?原因在于瀏覽器緩存。
大多數服務器,或空間已經默認設置了緩存功能,站長或者seoer要做的就是在后臺設定相應文件類型以及過期時間。在此,建議為:如果是windows主機,就將圖片,css和Javascript文件的緩存時間設置為30天;如果是ApacheWeb服務器,則使用mod_cache模塊開啟緩存功能。
8、優化css中的引用圖片
假設一個頁面需要大量的周邊圖片,如下圖標等,如果這些圖片都是單獨調用,那么請求數就會加大,這就說明:cssimages過多,請求數就會增大,網站打開速度就會變慢。
如果我們將頁面所需要使用的圖片合并在一張圖上,那么這些圖片請求數就會變為1,頁面速度相對就會加快。如何將需要的圖片放在一張圖上并在相應的位置調用呢?方法在于坐標定位。即:通過css坐標取得圖片路徑,標簽中引用相應坐標。
如果你對前端了解,那么這些都不是大問題,如果你不懂css,那么CSS圖片合并生成器類工具(百度即可)能直接提供相應內容:合并css圖片,同時生成相應代碼。
9、圖片壓縮處理
有數據顯示,圖片加載時間是造成網站速度的最大因素,將圖片加載速度問題解決,頁面速度問題就解決了一大半。假設網站有大量jpg等格式的圖片,需要在不影響視覺的前提下,盡量對其壓縮,以減少圖片本身的大小。與壓縮Javascript文件類似,有大量的在線工具提供相應壓縮服務,有大量的圖像編輯軟件如美圖秀秀等,都有壓縮功能。
10、服務器端開啟gzip壓縮功能
網頁中的每個元素越小,下載所需的時間就越少,這個很好理解。gzip壓縮是效率較高的一種數據壓縮格式。如果開啟gzip壓縮,壓縮率一般能達到75%左右,效果非常明顯。大部分服務器如虛擬主機,VPS等都已經默認開啟了這一項功能,如果沒有開啟,你對相應設置又不會,建議直接聯系空間商,讓他們解決。
11、HTTPS優化
百度倡導任何站點開啟HTTPS模式,用來加強網站信息傳輸的安全,同時也會給予一定的排名參考,但我們都制定https需要調用服務器資源并占用一定時間,目前最好的辦法就是開啟具有https加速的CDN。
12、減少重定向請求
日常工作中,我們經常會對一些需要變更的頁面進行301重定向,盡量避免網站出現大量的重定向網址,特別是已經參與排名的頁面,它耗費了服務器的響應時間。
總結:以上就是樂建給大家分享的干貨,提高網站加載速度的細節還有很多,我們應該善于利用工具發現問題,從而節省大量的排查時間。
1、關注我的頭條號
2、私信回復關鍵詞:資料
希望大家將此進行分享,轉載,讓跟多需要的朋友看到,這樣不僅自己得到了幫助,也能幫助到其他人!
我是樂建,歡迎大家關注《樂建網創軍團》,創業知識分享,只講人人都可上手的創業賺錢方法,分享最接地氣的SEO賺錢實戰干貨。專注自媒體創業、營銷、變現等各類干貨分享。關注我,學習更多。
?
可能知道幾種使用純CSS創建圖表的方法。但是我還沒有看到“面積圖”(想象一下填充有底部區域的折線圖)的許多示例,尤其是HTML中的任何示例。和CSS。在本文中,我們將使用語義和可訪問的HTML基礎來做到這一點。
為簡化起見,我們將使用<ul>標簽作為<li>各個數據項的包裝和元素。您可以根據需要在項目中使用任何其他HTML標記。
<ul class="area-chart">
<li> 40% </li>
<li> 80% </li>
<li> 60% </li>
<li> 100% </li>
<li> 30% </li>
</ul>
CSS無法檢索內部HTML文本,這就是為什么我們將使用CSS自定義屬性將數據傳遞到CSS的原因。每個數據項將具有--start和的--end自定義屬性。
<ul class="area-chart">
<li style="--start: 0.1; --end: 0.4;"> 40% </li>
<li style="--start: 0.4; --end: 0.8;"> 80% </li>
<li style="--start: 0.8; --end: 0.6;"> 60% </li>
<li style="--start: 0.6; --end: 1.0;"> 100% </li>
<li style="--start: 1.0; --end: 0.3;"> 30% </li>
</ul>
在進入樣式之前,我們應考慮以下幾個設計原則:
讓我們先從一般布局樣式開始。圖表包裝器元素是一個flex容器,可連續顯示項目,并拉伸每個子元素,以便填充整個區域。
.area-chart {
/* Reset */
margin: 0;
padding: 0;
border: 0;
/* Dimensions */
width: 100%;
max-width: var(--chart-width, 100%);
height: var(--chart-height, 300px);
/* Layout */
display: flex;
justify-content: stretch;
align-items: stretch;
flex-direction: row;
}
如果面積圖包裝器是列表,則應刪除列表樣式,以使我們更具樣式靈活性。
ul.area-chart,
ol.area-chart {
list-style: none;
}
此代碼為整個圖表中的所有列設置樣式。使用條形圖很簡單:我們為每一列使用background-color和height。隨著地區焦炭TS,我們將使用clip-path屬性設置應顯示的區域。
首先,我們設置每一列:
.area-chart > * {
/* Even size items */
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0;
/* Color */
background: var(--color, rgba(240, 50, 50, .75));
}
要創建一個覆蓋整個區域的矩形,我們將到達clip-path屬性,并使用polygon()包含該區域坐標的函數。目前,這基本上什么也不做,因為多邊形覆蓋了所有內容:
.area-chart > * {
clip-path: polygon(
0% 0%, /* top left */
100% 0%, /* top right */
100% 100%, /* bottom right */
0% 100% /* bottom left */
);
}
現在最好的部分!
為了僅顯示該列的一部分,我們將其裁剪以創建類似于面積圖的效果。為了只顯示我們想要的區域,我們在多邊形內使用--start和--end自定義屬性clip-path:
.area-chart > * {
clip-path: polygon(
0% calc(100% * (1 - var(--start))),
100% calc(100% * (1 - var(--end))),
100% 100%,
0% 100%
);
}
認真地講,CSS的這一部分完成了所有工作。這是我們得到的:
現在我們已經了解了基礎知識,讓我們創建一個包含多個數據集的面積圖。面積圖通常可以測量一組以上的數據,其效果是對數據進行分層比較。
這種圖表需要幾個子元素,因此我們將用代替我們的<ul>方法<table>。
<table class="area-chart">
<tbody>
<tr>
<td> 40% </td>
<td> 80% </td>
</tr>
<tr>
<td> 60% </td>
<td> 100% </td>
</tr>
</tbody>
</table>
表是可訪問的,并且對搜索引擎友好。而且,如果由于某種原因未加載樣式表,則所有數據仍在標記中可見。
同樣,我們將使用--start和--end自定義屬性,其數字介于0和1之間。
<table class="area-chart">
<tbody>
<tr>
<td style="--start: 0; --end: 0.4;"> 40% </td>
<td style="--start: 0; --end: 0.8;"> 80% </td>
</tr>
<tr>
<td style="--start: 0.4; --end: 0.6;"> 60% </td>
<td style="--start: 0.8; --end: 1.0;"> 100% </td>
</tr>
</tbody>
</table>
因此,首先,我們將為包裝元素(即表格)的總體布局設置樣式,并為其提供了一個.area-chart類:
.area-chart {
/* Reset */
margin: 0;
padding: 0;
border: 0;
/* Dimensions */
width: 100%;
max-width: var(--chart-width, 600px);
height: var(--chart-height, 300px);
}
接下來,我們將使<tbody>元素成為flex容器,<tr>連續顯示項目并按大小均勻顯示:
.area-chart tbody {
width: 100%;
height: var(--chart-height, 300px);
/* Layout */
display: flex;
justify-content: stretch;
align-items: stretch;
flex-direction: row;
}
.area-chart tr {
/* Even size items */
flex-grow: 1;
flex-shrink: 1;
flex-basis: 0;
}
現在,我們需要使<td>元素相互覆蓋,一個元素彼此重疊,以便獲得分層效果。每個都<td>覆蓋<tr>包含它的元素的整個區域。
.area-chart tr {
position: relative;
}
.area-chart td {
position: absolute;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
讓我們clip-path: polygon()使用神奇的力量!我們僅顯示--start和--end自定義屬性之間的區域,該區域的值再次為0到1:
.area-chart td {
clip-path: polygon(
0% calc(100% * (1 - var(--start))),
100% calc(100% * (1 - var(--end))),
100% 100%,
0% 100%
);
}
現在讓我們為每個顏色添加顏色:
.area-chart td {
background: var(--color);
}
.area-chart td:nth-of-type(1) {
--color: rgba(240, 50, 50, 0.75);
}
.area-chart td:nth-of-type(2) {
--color: rgba(255, 180, 50, 0.75);
}
.area-chart td:nth-of-type(3) {
--color: rgba(255, 220, 90, 0.75);
}
重要的是使用具有不透明度的顏色以獲得更好的效果,這就是為什么我們使用rgba()值。hsla()如果那是您滾動的方式,則可以在這里使用。
而且,就像這樣:
不管我們向圖表中添加多少HTML元素,基于flex的布局都可以確保所有項目的大小均相等。這樣,我們只需要設置包裝圖元素的寬度,項目就會根據響應布局進行相應調整。
我們已經介紹了一種使用純CSS創建面積圖的技術。如果你覺得這篇文章還可以的話,請給我點個贊
星紅旗迎風飄揚,勝利歌聲多么嘹亮……
你知道五星紅旗上的五角星代表著什么嗎?(答案見文章末尾)
五角星
今天我們先來用javacript繪制一下五角星。
【思路】
五角星五個角的總度數為180度,所以每個角的度數是36度。根據三角余弦就可以算出每條邊的長度和起始點。
【代碼】
<body onload='draw()'>
<canvas id="myCanvas" width="500" height="500"></canvas>
<script type="text/javascript">
function draw() {
var canvas=document.getElementById("myCanvas");
var context=canvas.getContext("2d");
context.beginPath();
//設置各個頂點的坐標,根據頂點制定路徑
for (var i=0; i < 5; i++) {
context.lineTo(Math.cos((18+i*72)/180*Math.PI)*200+200,
-Math.sin((18+i*72)/180*Math.PI)*200+200);
context.lineTo(Math.cos((54+i*72)/180*Math.PI)*80+200,
-Math.sin((54+i*72)/180*Math.PI)*80+200);
}
context.closePath();
//設置邊框樣式以及填充顏色
context.lineWidth="3";
context.fillStyle="#F6F152";
context.strokeStyle="#F5270B";
context.fill();
context.stroke();
}
</script>
</body>
運行效果如圖:
五角星
五星紅旗上的五顆五角星拱衛圖形和相互關系象征共產黨領導下的革命人民大團結,最大的星星代表中國共產黨,四顆小星代表工人、農民、知識分子、民族資產階級(即“工、農、士、商”)。
五星紅旗,我們永遠的驕傲,我們為你自豪!
*請認真填寫需求信息,我們會在24小時內與您取得聯系。