cari
Rumahhujung hadapan webtutorial jsBagaimana saya berjaya menghasilkan jutaan imej kecil pada halaman web

Saya sedang membina 10MPage.com yang merakam keadaan internet pada tahun 2025. Setiap pengguna internet dibenarkan memuat naik imej kecil bersaiz 64x64 piksel dan menyumbang kepada arkib ini.

Seperti namanya, ia perlu mampu mengendalikan 10 juta imej kecil ini. Apabila saya mula-mula menghasilkan konsep ini, saya bimbang tentang cara untuk membuatnya dengan cekap. Dalam artikel ini saya akan bercakap tentang percubaan pertama saya adalah dan penyelesaian terakhir.

Sebelum anda meneruskan, lihat 10MPage.com dan lihat jika anda boleh mengetahui cara ia dilakukan. Dan jika anda telah mencapai 10MPage, mengapa tidak menuntut jubin untuk diri sendiri? :)

Tag imej berbanding kanvas

Pilihan pertama yang perlu saya buat ialah jika saya mahu menggunakan elemen HTML atau kanvas skrin penuh.

Tag imej berasingan

Saya pada mulanya menguji dengan tag Bagaimana saya berjaya menghasilkan jutaan imej kecil pada halaman web

<div>



<p>With this CSS:<br>
</p>

<pre class="brush:php;toolbar:false">    <style>
        body {
            margin: 0;
            padding: 0;
            overflow: auto; /* Enable scrolling */
        }

        .grid {
            display: block;
            position: relative;
            width: 100%; /* The grid will take the full width */
        }

        .row {
            display: flex; /* Each row is a flex container */
        }

        .tile {
            width: 64px;
            height: 64px;
            box-sizing: border-box;
            border: 1px solid #ccc; /* Visual separation between tiles */
        }

        .tile img {
            width: 64px;
            height: 64px;
            object-fit: cover;
        }
    </style>

Beginilah rupanya:

How I managed to render million small images on a webpage

Baiklah tetapi terdapat beberapa perkara yang boleh menjadi isu:

  • Tatal penyemak imbas
  • DOM Besar
  • Malas memuatkan

Kanvas

Pendekatan seterusnya adalah melalui kanvas, untuk memudahkan saya memutuskan untuk melukis papan dam sahaja. Menambah menatal juga mudah, beginilah rupanya:

<badan>
<kanvas>



<p>Tangkapan skrin:<br>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173668501927013.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="How I managed to render million small images on a webpage"></p>

<p>Pendekatan ini bagus kerana ia membolehkan saya memaparkan segala-galanya melalui kod yang akan menjadikan ciri yang lebih maju lebih mudah.</p>

<h3>
  
  
  Membuat keputusan tentang tag imej atau kanvas
</h3>

<p>Akhirnya saya memutuskan untuk menggunakan kanvas kerana ia lebih fleksibel daripada div. Ini kerana perkara seperti memuatkan animasi, menatal lancar, memuatkan malas dan fakta bahawa ia diberikan secara masuk melalui kod yang memberikan banyak kawalan. </p>

<p>Tetapi memuatkan banyak imej kecil menyebabkan banyak overhed, untuk meminimumkan bahawa saya ingin menggabungkan imej kecil dalam blok yang lebih besar.</p>

<h2>
  
  
  Optimumkan penghantaran jubin
</h2>

<p>Memuatkan setiap imej secara berasingan menambahkan banyak permintaan rangkaian. Mari cepat mengira pada skrin 1080p. Lebar ialah 1920 piksel yang akan menjadi 1920 / 64 = 30 jubin. Dengan ketinggian 1080 piksel yang akan menjadi 1080 / 64 = ~17 jubin. Jadi untuk memaparkan skrin penuh jubin pada paparan HD penuh, ia memerlukan pemaparan 30*17 = 510 imej kecil. </p>
<p>Tetapi kita perlu boleh menatal! Dan apabila menatal saya tidak mahu menunjukkan banyak ikon pemuatan sebelum membuat persembahan. Jadi ini bermakna kita perlu memuatkan imej sekeliling juga. Jika kita ingin memuatkan terlebih dahulu di sekelilingnya, kita perlu menambah lapan kali jubin. Bayangkan segi empat tepat hitam ialah paparan:</p>

<p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173668502115888.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="How I managed to render million small images on a webpage"></p>

<p>*<em>Itu akan menjadi 510 * 8 = 4080 imej! *</em></p>

<p>Adalah tidak realistik untuk memaparkan imej sebanyak itu dengan begitu pantas. Penyelesaiannya?  Gabungkan jubin individu dalam blok yang lebih besar.</p>

<p>Menggunakan PHP, saya menulis pengawal yang menghasilkan imej yang mengandungi 16*16 jubin. Setiap blok adalah 64 * 16 = 1024 piksel lebar dan tinggi. Anda boleh melihat ini apabila anda pergi ke 10MPage dan melihat dalam tab rangkaian konsol anda.</p>

<p><img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173668502382486.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="How I managed to render million small images on a webpage"></p>

<p>Skrip akan menambah tanda soal untuk tempat yang tidak diisi.</p>

<p>Jadi daripada 4080 imej untuk 1920 * 3 = 5760 piksel dengan 1080 * 3 = 3240 piksel, kini kita hanya memerlukan 24 imej: 5760 / 1024 = ~6, 3240 / 1024 = ~4 (kedua-duanya dibundarkan), 6* 4 = 24. Mana yang boleh dilakukan!</p>

<h2>
  
  
  Menyembunyikan blok
</h2>

<p>Saya telah melaksanakan beberapa perkara untuk 'menyembunyikan' bahawa jubin dimuatkan dalam blok yang lebih besar.</p>

<h3>
  
  
  Skrin pemuatan sentiasa mempunyai jubin 64x64
</h3>

<p>Memuatkan skrin<br>
<img src="/static/imghwm/default1.png" data-src="https://img.php.cn/upload/article/000/000/000/173668502441571.jpg?x-oss-process=image/resize,p_40" class="lazy" alt="How I managed to render million small images on a webpage"></p>

<h3>
  
  
  Grid penuh sentiasa diberikan segi empat sama
</h3>

<p>Untuk menyembunyikan jurang yang besar di bahagian bawah atau kanan grid, grid tidak akan memuatkan blok jika ia bukan segi empat sama. Anda tidak akan melihat blok di bahagian bawah dan kemudian blok kosong di sebelah kiri atau kanan blok itu.</p>

<p>Terima kasih kerana membaca artikel ini, saya harap anda telah belajar sesuatu. <br>
Jika anda melakukannya, mengapa tidak menambah bahasa pengaturcaraan kegemaran anda, syiling crypto atau haiwan kesayangan anda pada 10MPage? Ianya percuma!</p>


          </kanvas></badan>

Atas ialah kandungan terperinci Bagaimana saya berjaya menghasilkan jutaan imej kecil pada 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
Beyond the Browser: JavaScript di dunia nyataBeyond the Browser: JavaScript di dunia nyataApr 12, 2025 am 12:06 AM

Aplikasi JavaScript di dunia nyata termasuk pengaturcaraan sisi pelayan, pembangunan aplikasi mudah alih dan Internet of Things Control: 1. Pengaturcaraan sisi pelayan direalisasikan melalui node.js, sesuai untuk pemprosesan permintaan serentak yang tinggi. 2. Pembangunan aplikasi mudah alih dijalankan melalui reaktnatif dan menyokong penggunaan silang platform. 3. Digunakan untuk kawalan peranti IoT melalui Perpustakaan Johnny-Five, sesuai untuk interaksi perkakasan.

Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend)Membina aplikasi SaaS Multi-penyewa dengan Next.js (Integrasi Backend)Apr 11, 2025 am 08:23 AM

Saya membina aplikasi SaaS multi-penyewa berfungsi (aplikasi edTech) dengan alat teknologi harian anda dan anda boleh melakukan perkara yang sama. Pertama, apakah aplikasi SaaS multi-penyewa? Aplikasi SaaS Multi-penyewa membolehkan anda melayani beberapa pelanggan dari Sing

Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)Cara Membina Aplikasi SaaS Multi-Tenant dengan Next.js (Integrasi Frontend)Apr 11, 2025 am 08:22 AM

Artikel ini menunjukkan integrasi frontend dengan backend yang dijamin oleh permit, membina aplikasi edtech SaaS yang berfungsi menggunakan Next.Js. Frontend mengambil kebenaran pengguna untuk mengawal penglihatan UI dan memastikan permintaan API mematuhi dasar peranan

JavaScript: meneroka serba boleh bahasa webJavaScript: meneroka serba boleh bahasa webApr 11, 2025 am 12:01 AM

JavaScript adalah bahasa utama pembangunan web moden dan digunakan secara meluas untuk kepelbagaian dan fleksibiliti. 1) Pembangunan front-end: Membina laman web dinamik dan aplikasi satu halaman melalui operasi DOM dan kerangka moden (seperti React, Vue.js, sudut). 2) Pembangunan sisi pelayan: Node.js menggunakan model I/O yang tidak menyekat untuk mengendalikan aplikasi konkurensi tinggi dan masa nyata. 3) Pembangunan aplikasi mudah alih dan desktop: Pembangunan silang platform direalisasikan melalui reaktnatif dan elektron untuk meningkatkan kecekapan pembangunan.

Evolusi JavaScript: Trend Semasa dan Prospek Masa DepanEvolusi JavaScript: Trend Semasa dan Prospek Masa DepanApr 10, 2025 am 09:33 AM

Trend terkini dalam JavaScript termasuk kebangkitan TypeScript, populariti kerangka dan perpustakaan moden, dan penerapan webassembly. Prospek masa depan meliputi sistem jenis yang lebih berkuasa, pembangunan JavaScript, pengembangan kecerdasan buatan dan pembelajaran mesin, dan potensi pengkomputeran IoT dan kelebihan.

Demystifying JavaScript: Apa yang berlaku dan mengapa pentingDemystifying JavaScript: Apa yang berlaku dan mengapa pentingApr 09, 2025 am 12:07 AM

JavaScript adalah asas kepada pembangunan web moden, dan fungsi utamanya termasuk pengaturcaraan yang didorong oleh peristiwa, penjanaan kandungan dinamik dan pengaturcaraan tak segerak. 1) Pengaturcaraan yang didorong oleh peristiwa membolehkan laman web berubah secara dinamik mengikut operasi pengguna. 2) Penjanaan kandungan dinamik membolehkan kandungan halaman diselaraskan mengikut syarat. 3) Pengaturcaraan Asynchronous memastikan bahawa antara muka pengguna tidak disekat. JavaScript digunakan secara meluas dalam interaksi web, aplikasi satu halaman dan pembangunan sisi pelayan, sangat meningkatkan fleksibiliti pengalaman pengguna dan pembangunan silang platform.

Adakah Python atau JavaScript lebih baik?Adakah Python atau JavaScript lebih baik?Apr 06, 2025 am 12:14 AM

Python lebih sesuai untuk sains data dan pembelajaran mesin, manakala JavaScript lebih sesuai untuk pembangunan front-end dan penuh. 1. Python terkenal dengan sintaks ringkas dan ekosistem perpustakaan yang kaya, dan sesuai untuk analisis data dan pembangunan web. 2. JavaScript adalah teras pembangunan front-end. Node.js menyokong pengaturcaraan sisi pelayan dan sesuai untuk pembangunan stack penuh.

Bagaimana saya memasang javascript?Bagaimana saya memasang javascript?Apr 05, 2025 am 12:16 AM

JavaScript tidak memerlukan pemasangan kerana ia sudah dibina dalam pelayar moden. Anda hanya memerlukan editor teks dan penyemak imbas untuk memulakan. 1) Dalam persekitaran penyemak imbas, jalankan dengan memasukkan fail HTML melalui tag. 2) Dalam persekitaran Node.js, selepas memuat turun dan memasang node.js, jalankan fail JavaScript melalui baris arahan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

DVWA

DVWA

Damn Vulnerable Web App (DVWA) ialah aplikasi web PHP/MySQL yang sangat terdedah. Matlamat utamanya adalah untuk menjadi bantuan bagi profesional keselamatan untuk menguji kemahiran dan alatan mereka dalam persekitaran undang-undang, untuk membantu pembangun web lebih memahami proses mengamankan aplikasi web, dan untuk membantu guru/pelajar mengajar/belajar dalam persekitaran bilik darjah Aplikasi web keselamatan. Matlamat DVWA adalah untuk mempraktikkan beberapa kelemahan web yang paling biasa melalui antara muka yang mudah dan mudah, dengan pelbagai tahap kesukaran. Sila ambil perhatian bahawa perisian ini

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

mPDF

mPDF

mPDF ialah perpustakaan PHP yang boleh menjana fail PDF daripada HTML yang dikodkan UTF-8. Pengarang asal, Ian Back, menulis mPDF untuk mengeluarkan fail PDF "dengan cepat" dari tapak webnya dan mengendalikan bahasa yang berbeza. Ia lebih perlahan dan menghasilkan fail yang lebih besar apabila menggunakan fon Unicode daripada skrip asal seperti HTML2FPDF, tetapi menyokong gaya CSS dsb. dan mempunyai banyak peningkatan. Menyokong hampir semua bahasa, termasuk RTL (Arab dan Ibrani) dan CJK (Cina, Jepun dan Korea). Menyokong elemen peringkat blok bersarang (seperti P, DIV),

EditPlus versi Cina retak

EditPlus versi Cina retak

Saiz kecil, penyerlahan sintaks, tidak menyokong fungsi gesaan kod