Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Perisian tengah rangka kerja Yii: Gunakan caching dan CDN untuk mempercepatkan pemuatan halaman web

Perisian tengah rangka kerja Yii: Gunakan caching dan CDN untuk mempercepatkan pemuatan halaman web

WBOY
WBOYasal
2023-07-29 18:21:111345semak imbas

Yii framework middleware: Gunakan caching dan CDN untuk mempercepatkan kelajuan memuatkan halaman web

Dalam pembangunan web, kelajuan memuatkan halaman secara langsung mempengaruhi pengalaman pengguna dan prestasi tapak web. Untuk meningkatkan kelajuan memuatkan halaman web, kami boleh menggunakan caching dan CDN (rangkaian penghantaran kandungan) untuk mempercepatkan penghantaran dan paparan halaman. Rangka kerja Yii menyediakan pelbagai fungsi untuk menyokong penggunaan caching dan CDN Artikel ini akan memperkenalkan cara mempercepatkan kelajuan memuatkan halaman Web melalui perisian tengah rangka kerja Yii.

1. Gunakan fungsi caching rangka kerja Yii

Rangka kerja Yii menyediakan sokongan caching yang kaya, termasuk caching serpihan halaman, caching data, caching HTTP, dsb. Kita boleh menggunakan mekanisme caching ini melalui fail konfigurasi atau kod.

1.1 Caching Serpihan Halaman

Caching serpihan halaman boleh cache kandungan bahagian halaman tertentu, mengurangkan pertanyaan pangkalan data dan proses pemaparan, dengan itu meningkatkan kelajuan pemuatan halaman. Dalam rangka kerja Yii, kita boleh menggunakan widget untuk melaksanakan caching serpihan halaman.

Berikut adalah contoh, dengan mengandaikan bahawa kami mempunyai senarai komen di halaman kami, kami boleh menggunakan widget untuk cache kandungan bahagian senarai komen:

use yiiwidgetsFragmentCache;

echo FragmentCache::widget([
    'id' => 'comment-list',
    'duration' => 3600,
    'dependency' => [
        'class' => 'yiicachingDbDependency',
        'sql' => 'SELECT COUNT(*) FROM comment',
    ],
    'content' => function () {
        // 渲染评论列表的代码
    },
]);

Dalam kod di atas, kami menyediakan cache dengan id "senarai komen" Serpihan, masa cache ialah 3600 saat. Kami juga menggunakan kebergantungan pangkalan data yang secara automatik membatalkan cache apabila bilangan komen berubah. Dengan cara ini, kandungan senarai komen hanya akan dijana semula apabila cache tamat tempoh, sekali gus meningkatkan kelajuan pemuatan halaman.

1.2 Cache data

Caching data adalah untuk cache hasil pertanyaan atau hasil pengiraan ke dalam memori atau media storan lain supaya data cache boleh digunakan terus semasa permintaan seterusnya, dengan itu mengelakkan pertanyaan berulang atau operasi pengiraan.

Dalam rangka kerja Yii, kami boleh menggunakan komponen cache untuk melaksanakan caching data. Berikut ialah contoh menggunakan komponen cache untuk cache hasil pertanyaan:

// 获取缓存组件
$cache = Yii::$app->cache;

// 查看缓存是否存在
$key = 'user_list';
$data = $cache->get($key);
if ($data === false) {
    // 如果缓存不存在,则查询数据库并缓存查询结果
    $data = User::find()->all();
    $cache->set($key, $data, 3600);
}

// 使用缓存数据
foreach ($data as $user) {
    // 显示用户信息
}

Dalam kod di atas, kami menggunakan komponen cache terbina dalam Yii::$app->cache rangka kerja Yii untuk operasi caching. Kami mula-mula cuba mendapatkan data daripada cache Jika pemerolehan gagal, kami melakukan pertanyaan pangkalan data dan cache hasil pertanyaan. Dengan cara ini, pada permintaan seterusnya, kami boleh terus menggunakan data cache, mengelakkan pertanyaan pangkalan data berulang, sekali gus meningkatkan kelajuan memuatkan halaman.

2. Gunakan CDN untuk mempercepatkan kelajuan memuatkan halaman web

Apabila menghantar halaman web, kita boleh menggunakan CDN untuk mempercepatkan kelajuan memuatkan halaman. CDN (Rangkaian Penghantaran Kandungan) menyimpan sumber statik halaman Web (seperti gambar, helaian gaya, skrip, dll.) kepada pelayan yang lebih dekat dengan pengguna, dengan itu mengurangkan jarak penghantaran dan meningkatkan kelajuan pemuatan halaman.

Dalam rangka kerja Yii, kami boleh menggunakan CDN untuk mempercepatkan permintaan sumber statik. Berikut ialah contoh menggunakan CDN untuk memuatkan imej:

use yiihelpersHtml;

// 使用CDN来加载图像
echo Html::img('http://cdn.example.com/images/logo.png');

Dalam kod di atas, kami menggunakan kelas pembantu Html yang disediakan oleh rangka kerja Yii untuk menjana teg imej dan menentukan alamat CDN. Dengan cara ini, apabila halaman dimuatkan, imej akan dimuatkan dari pelayan CDN, dengan itu meningkatkan kelajuan pemuatan halaman.

Selain memuatkan sumber statik, kami juga boleh mempercepatkan penyimpanan sumber statik melalui CDN. Dalam rangka kerja Yii, kami boleh menggunakan perkhidmatan storan awan (seperti Qiniu Cloud, Alibaba Cloud, dll.) untuk menyimpan dan mengedarkan sumber statik. Berikut ialah contoh menggunakan Storan Awan Qiniu untuk menyimpan dan mengedarkan imej:

use yiihelpersHtml;

// 使用七牛云存储来加载图像
echo Html::img('http://cdn.example.com/images/logo.png', ['style' => 'width: 200px; height: 100px;']);

Dalam kod di atas, kami juga menggunakan kelas pembantu Html yang disediakan oleh rangka kerja Yii untuk menjana teg imej dan menentukan alamat Storan Awan Qiniu dan imej gaya. Dengan cara ini, apabila halaman dimuatkan, imej akan dimuatkan daripada pelayan storan awan Qiniu, dengan itu meningkatkan lagi kelajuan pemuatan halaman.

Ringkasnya, dengan menggunakan perisian tengah rangka kerja Yii untuk melaksanakan caching dan mekanisme pecutan CDN, kami boleh meningkatkan kelajuan pemuatan halaman Web, meningkatkan pengalaman pengguna dan prestasi tapak web. Saya harap artikel ini dapat membantu anda mempercepatkan kelajuan halaman semasa membangunkan aplikasi web menggunakan rangka kerja Yii.

Rujukan:

  • Dokumentasi Yii: https://www.yiiframework.com/doc/guide/2.0/zh-cn/caching-overview
  • CDN Wiki: https://en.wikipedia.org/wiki / Rangkaian_penghantaran_kandungan

Atas ialah kandungan terperinci Perisian tengah rangka kerja Yii: Gunakan caching dan CDN untuk mempercepatkan pemuatan halaman web. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn