提高網站性能的有效技巧

如今,快速的網站加載速度對於提升用戶體驗和SEO排名都至關重要。在這篇文章中,我們將深入探討如何提高網站性能,包括以下幾個方面:

一、優化圖片

對於大多數網站來說,圖片是頁面大小的最大貢獻者。通過以下幾種優化技巧,您可以顯著減少頁面加載時間:

1、壓縮圖片

/**
 * 圖片壓縮
 * @param img 需要壓縮的圖片
 * @param width 壓縮後的圖像寬度
 * @param height 壓縮後的圖像高度
 * @param quality 壓縮質量(0-1之間)
 * @param type 壓縮類型(png或jpg)
 * @returns Promise
 */
 function compressImage(img, width, height, quality, type) {
  return new Promise((resolve, reject) => {
    const canvas = document.createElement("canvas");
    const ctx = canvas.getContext("2d");
    const imgWidth = img.naturalWidth;
    const imgHeight = img.naturalHeight;

    const imgRatio = imgWidth / imgHeight;
    const ratio = width / height;

    let resizeWidth = width;
    let resizeHeight = height;
    let offsetX = 0;
    let offsetY = 0;

    if (imgWidth > width || imgHeight > height) {
      // 按照長寬比等比縮放
      if (imgRatio > ratio) {
        resizeHeight = width / imgRatio;
        offsetY = (height - resizeHeight) / 2;
      } else {
        resizeWidth = height * imgRatio;
        offsetX = (width - resizeWidth) / 2;
      }
    } else {
      resizeWidth = imgWidth;
      resizeHeight = imgHeight;
      offsetX = (width - imgWidth) / 2;
      offsetY = (height - imgHeight) / 2;
    }

    canvas.width = width;
    canvas.height = height;
    ctx.drawImage(img, offsetX, offsetY, resizeWidth, resizeHeight);

    canvas.toBlob(
      (blob) => {
        resolve(blob);
      },
      type,
      quality
    );
  });
}

2、使用響應式圖片

針對不同設備,使用不同大小的圖片,減少不必要的頁面流量,可以使用以下所示HTML/CSS代碼實現響應式圖片。

<picture>
  <source media="(min-width: 768px)" srcset="large-image.jpg">
  <source media="(min-width: 576px)" srcset="medium-image.jpg">
  <img src="small-image.jpg" alt="橙色花">
</picture>

img { max-width: 100%; height: auto; }

3、使用WebP格式

WebP是一種新型圖像格式,由Google開發。相對於JPG和PNG格式,WebP圖片體積更小,加載速度更快。以下是使用WebP格式的代碼:

<picture>
  <source srcset="image.webp" type="image/webp">
  <source srcset="image.jpg" type="image/jpeg">
  <img src="image.jpg" alt="橙色花">
</picture>

二、 使用CSS和JavaScript技巧

1、使用CDN

使用CDN可以通過將腳本文件保存在分布式網絡上,加快加載速度。以下是使用CDN的例子:

<script src="https://cdn.example.com/javascript.js">

2、減少HTTP請求

HTTP請求是加載時間最長的因素,可以減少頁面中的HTTP請求次數來加速加載時間。以下是如何減少HTTP請求:

  • 合併文件:通過將CSS和JavaScript文件合併,可以減少HTTP請求
  • 使用CSS雪碧圖:通過將多張小圖合併成一張大圖,可以減少HTTP請求

3、延遲加載

將不必要的或較重的資源延遲加載,優化首次渲染的加載時間。以下是延遲加載的例子:

<img class="lazyload" data-src="image.jpg" alt="橙色花">

<script>
  // 使用IntersectionObserver實現圖片懶加載
  var options = {
    root: null,
    rootMargin: "0px",
    threshold: 0.1,
  };

  var observer = new IntersectionObserver(function (entries, observer) {
    entries.forEach(function (entry) {
      if (entry.isIntersecting) {
        var lazyImage = entry.target;
        lazyImage.src = lazyImage.dataset.src;
        observer.unobserve(lazyImage);
      }
    });
  }, options);

  document.querySelectorAll(".lazyload").forEach(function (lazyImage) {
    observer.observe(lazyImage);
  });
</script>

三、優化服務器/後台

1、啟用HTTP/2協議

HTTP/2協議可以顯著減少頁面加載時間,HTTP/2協議可以同時對多個文件進行傳輸。因此,可以減少HTTP請求和提高服務器響應速度。

2、啟用Gzip壓縮

啟用Gzip壓縮可以減少網頁的傳輸時間。如下代碼所示,可以通過修改Web服務器配置來啟用文件Gzip壓縮。

// Apache服務器Gzip壓縮
<ifModule mod_deflate.c>
  AddOutputFilterByType DEFLATE text/html text/plain text/xml
  AddOutputFilterByType DEFLATE application/xhtml+xml
  AddOutputFilterByType DEFLATE text/css
  AddOutputFilterByType DEFLATE application/xml
  AddOutputFilterByType DEFLATE application/javascript
  AddOutputFilterByType DEFLATE application/x-javascript
</ifModule>

// Nginx服務器Gzip壓縮
gzip on;
gzip_types text/plain text/css application/json application/javascript text/xml application/xml application/xml+rss text/javascript;

3、啟用緩存

啟用緩存可以減少從服務器上獲取文件的次數。以下是如何啟用緩存的代碼。

// Apache服務器緩存
ExpiresActive On
ExpiresDefault "access plus 1 month"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/png "access plus 1 year"

// Nginx服務器緩存
location / {
  root /path/to/root;
  expires 1h;
}

四、結語

通過上述的技巧,您可以提高網站性能,提升用戶體驗,同時增加SEO排名。在實際項目中,我們可以根據實際情況綜合使用各項技巧,來達到最佳的性能和用戶體驗。

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/200167.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-12-05 14:04
下一篇 2024-12-05 14:04

相關推薦

  • 使用vscode建立UML圖的實踐和技巧

    本文將重點介紹在使用vscode在軟件開發中如何建立UML圖,並且給出操作交互和技巧的指導。 一、概述 在軟件開發中,UML圖是必不可少的重要工具之一。它為軟件架構和各種設計模式的…

    編程 2025-04-29
  • Python爬蟲可以爬哪些網站

    Python是被廣泛運用於數據處理和分析領域的編程語言之一。它具有易用性、靈活性和成本效益高等特點,因此越來越多的人開始使用它進行網站爬取。本文將從多個方面詳細闡述,Python爬…

    編程 2025-04-29
  • 網站為什麼會被黑客攻擊?

    黑客攻擊是指利用計算機技術手段,入侵或者破壞計算機信息系統的一種行為。網站被黑客攻擊是常見的安全隱患之一,那麼,為什麼網站會被黑客攻擊呢?本文將從不同角度分析這個問題,並且提出相應…

    編程 2025-04-29
  • 如何優化 Git 性能和重構

    本文將提供一些有用的提示和技巧來優化 Git 性能並重構代碼。Git 是一個非常流行的版本控制系統,但是在處理大型代碼倉庫時可能會有一些性能問題。如果你正在處理這樣的問題,本文將會…

    編程 2025-04-29
  • 如何用Python訪問網站

    本文將從以下幾個方面介紹如何使用Python訪問網站:網絡請求、POST請求、用戶代理、Cookie、代理IP、API請求。 一、網絡請求 Python有三種主流的網絡請求庫:ur…

    編程 2025-04-29
  • 如何將Python開發的網站變成APP

    要將Python開發的網站變成APP,可以通過Python的Web框架或者APP框架,將網站封裝為APP的形式。常見的方法有: 一、使用Python的Web框架Django Dja…

    編程 2025-04-28
  • 優秀周記1000字的撰寫思路與技巧

    優秀周記是每個編程開發工程師記錄自己工作生活的最佳方式之一。本篇文章將從周記的重要性、撰寫思路、撰寫技巧以及周記的示例代碼等角度進行闡述。 一、周記的重要性 作為一名編程開發工程師…

    編程 2025-04-28
  • 如何在服務器上運行網站

    想要在服務器上運行網站,需要按照以下步驟進行配置和部署。 一、選擇服務器和域名 想要在服務器上運行網站,首先需要選擇一台雲服務器或者自己搭建的服務器。雲服務器會提供更好的穩定性和可…

    編程 2025-04-28
  • 使用@Transactional和分表優化數據交易系統的性能和可靠性

    本文將詳細介紹如何使用@Transactional和分表技術來優化數據交易系統的性能和可靠性。 一、@Transactional的作用 @Transactional是Spring框…

    編程 2025-04-28
  • Python網站源碼解析

    本文將從多個方面對Python網站源碼進行詳細解析,包括搭建網站、數據處理、安全性等內容。 一、搭建網站 Python是一種高級編程語言,適用於多種領域。它也可以用於搭建網站。最常…

    編程 2025-04-28

發表回復

登錄後才能評論