Rumah hujung hadapan web html tutorial 高性能WEB开发 图片压缩篇

高性能WEB开发 图片压缩篇

Dec 16, 2016 pm 03:39 PM

一、缩小图片大小

当图片很多的时候,减少图片大小是提高下载速度最直接的方法。
1. 使用PNG8代替GIF(非动画图片),因为PNG8在效果一样的情况,图片大小比GIF要小。

2. 用fireworks处理PNG图片,在我们产品中很多PNG图片是美工直接用photoshop导出的,
后来让美工用fireworks处理PNG(大概的方式是选择保存为PNG8,删除背景色)。
处理后100K的图片大小基本减少了3/4,但图片质量也会有少许降低,要看自己是否能接受。

3. 使用Smush.it(http://www.smushit.com/ysmush.it/)压缩图片,Smush.it是YUI团队做1个在线压缩图片的网站,
该网站在不影响原图片的质量下去掉图片中一些元数据,所以可以放心使用该网站进行压缩,
但这个压缩比例也是比较有限的。


二、合并图片和拆分图片

1. CSS Sprites合并图片以减少请求数来提高性能大家都知道。但不要把图片合并太多,太多太大了,
就会因为这1个图片影响这个页面的显示了。

2. 有时候我们需要把1个大图片拆分成多个小图片,比如产品首页图片比较少,就1个很大的banner图片,
因浏览器都可以并发下载图片,所以如果不拆分,只使用1个大图片的话,下载速度反而会比较慢


三、透明图片处理

IE6不能显示透明的PNG图片,是很多开发人员特别头疼的事,分别介绍下几种方式的优缺点。

1.使用AlphaImageLoader,IE6支持filter,使用下面的CSS代码,可以让IE6支持PNG 

#some-element { 
background: url(image.png); 
_background: none; 
_filter:progid:DXImageTransform.Microsoft.AlphaImageLoader(src='image.png', 
sizingMethod='crop'); 
}
Salin selepas log masuk

优点:使用简单
缺点:性能损耗很大,AlphaImageLoader会花费很多资源去处理透明图片,使用AlphaImageLoader,IE使用内存会迅速上升。
而且AlphaImageLoader所有处理都在同1个线程中同步进行,所以当AlphaImageLoader多的时候,会阻塞UI的渲染。
使用_filter,IE7也可以识别,其实IE7是可以识别PNG透明图片的,如果在IE7下使用上面代码,IE7不会直接使用图片,而是使用AlphaImageLoader。
注:个人建议尽量避免使用AlphaImageLoader

2. JS处理
使用DD_belatedPNG(http://www.dillerdesign.com/experiment/DD_belatedPNG/),可以很简单的对界面上所有的透明图片进行同一处理。
优点:使用简单(比AlphaImageLoader还简单)
缺点:当页面上需要处理的图片比较多的时候,速度也比较慢,而且不能动态改变图片。

3. VML
IE6支持VML,VML可以使用透明图片,代码如下:
修改html代码头部
html xmlns ="http://www.w3.org/1999/xhtml" xmlns:v >
head >
style type ="text/css" >
v\:* { behavior : url(#default#VML) ; }
span style="color: rgb(128, 0, 0);">style >
span style="color: rgb(128, 0, 0);">head >
body >
v:image src ="image.png" />
span style="color: rgb(128, 0, 0);">body >
span style="color: rgb(128, 0, 0);">html >


优点:性能好,速度快
缺点:使用复杂,而且不支持firefox等浏览器,需要判断不同的浏览器输出不同的HTML代码。

四、多域名下载图片

因每个浏览器对同1个域名同时只能发送固定的请求,比如IE6好像是2个,所以可以对图片资源开通多个域名进行请求,
比如img1.abc.com,img2.abc.com。但域名不要开启太多,因为解析域名和打开新的连接都需要消耗时间,域名多了,说不定反而会更慢。一般2-4个域名就够了。

五、IE6下缓存背景图片

IE6背景图片缓存是个麻烦事,很多人知道使用下面的JS来让IE6缓存背景图片
try{
document.execCommand("BackgroundImageCache", false, true);
}catch(e){}
但是这样做的效果并不是非常好,当出现鼠标移动改变背景图片的时候,IE6老是会发送1个图片请求(尽管该背景图片已经下载),
虽然返回结果是304,但还是要花费不少时间。在这种情况下,可以使用下面1个变通的方式来处理,
在页面上直接使用1个DIV元素来加载该图片,这样加载图片就能真正被缓存,鼠标移动也不会发送请求了。

六、预加载图片

使用下面代码可以在页面加载完毕后预加载下1个页面的图片,当进入下1个页面就不用再下载图片了

window.onload=function(){ 
var img = new Image(); 
img.src = "images/image.png"; 
img = null; 
};
Salin selepas log masuk

 以上就是 图片压缩,WEB开发的内容,更多相关文章请关注PHP中文网(www.php.cn)! 


Kenyataan Laman Web ini
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

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)
2 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Repo: Cara menghidupkan semula rakan sepasukan
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Cara mendapatkan biji gergasi
4 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Perbandingan rangka kerja pembangunan web Python: Django vs Flask vs FastAPI Perbandingan rangka kerja pembangunan web Python: Django vs Flask vs FastAPI Sep 28, 2023 am 09:18 AM

Perbandingan rangka kerja pembangunan web Python: DjanggovsFlaskvsFastAPI Pengenalan: Dalam Python, bahasa pengaturcaraan yang popular, terdapat banyak rangka kerja pembangunan web yang sangat baik untuk dipilih. Artikel ini akan menumpukan pada membandingkan tiga rangka kerja web Python yang popular: Django, Flask dan FastAPI. Dengan membandingkan ciri, senario penggunaan dan contoh kod mereka, ia membantu pembaca memilih rangka kerja yang sesuai dengan keperluan projek mereka dengan lebih baik. 1. Django

Cara menggunakan enjin templat Twig dalam PHP untuk pembangunan web Cara menggunakan enjin templat Twig dalam PHP untuk pembangunan web Jun 25, 2023 pm 04:03 PM

Dengan pembangunan berterusan teknologi pembangunan Web, semakin ramai pembangun mula mencari enjin templat yang lebih fleksibel dan cekap untuk membangunkan aplikasi Web. Antaranya, Twig ialah enjin templat PHP yang sangat baik dan popular Ia dibangunkan berdasarkan rangka kerja Symfony dan menyokong pengembangan tanpa had Ia sangat sesuai untuk membina aplikasi web yang kompleks. Artikel ini akan memperkenalkan cara menggunakan enjin templat Twig untuk pembangunan web dalam PHP. 1. Pengenalan kepada enjin templat Twig Twig dibangunkan oleh FabienPoten

Membayangkan Semula Seni Bina: Menggunakan WordPress untuk Pembangunan Aplikasi Web Membayangkan Semula Seni Bina: Menggunakan WordPress untuk Pembangunan Aplikasi Web Sep 01, 2023 pm 08:25 PM

Dalam siri ini, kita akan membincangkan cara membina aplikasi web menggunakan WordPress. Walaupun ini bukan siri teknikal di mana kita akan melihat kod, kita merangkumi topik seperti rangka kerja, asas, corak reka bentuk, seni bina dan banyak lagi. Jika anda belum membaca artikel pertama dalam siri ini, saya mengesyorkannya, bagaimanapun, untuk tujuan artikel ini, kita boleh meringkaskan artikel sebelumnya seperti berikut: Secara ringkasnya, perisian boleh dibina pada rangka kerja, perisian boleh Memanjangkan asas; . Ringkasnya, kami membezakan antara rangka kerja dan asas—dua istilah yang sering digunakan secara bergantian dalam perisian, walaupun ia bukan perkara yang sama. WordPress adalah asas kerana ia adalah aplikasi itu sendiri. Ia bukan rangka kerja. Atas sebab ini, apabila ia datang kepada WordPress

MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web Jul 14, 2023 pm 02:34 PM

MySQL dan PostgreSQL: Amalan Terbaik dalam Pembangunan Web Pengenalan: Dalam dunia moden pembangunan web, pangkalan data merupakan komponen penting. Apabila memilih pangkalan data, pilihan biasa ialah MySQL dan PostgreSQL. Artikel ini akan merangkumi amalan terbaik untuk menggunakan MySQL dan PostgreSQL dalam pembangunan web dan menyediakan beberapa contoh kod. 1. Senario yang boleh digunakan MySQL sesuai untuk kebanyakan aplikasi web, terutamanya yang memerlukan prestasi tinggi, kebolehskalaan dan kemudahan penggunaan.

Apakah kelebihan dan kekurangan C++ berbanding bahasa pembangunan web yang lain? Apakah kelebihan dan kekurangan C++ berbanding bahasa pembangunan web yang lain? Jun 03, 2024 pm 12:11 PM

Kelebihan C++ dalam pembangunan web termasuk kelajuan, prestasi, dan akses peringkat rendah, manakala batasan termasuk keluk pembelajaran yang curam dan keperluan pengurusan memori. Apabila memilih bahasa pembangunan web, pembangun harus mempertimbangkan kelebihan dan had C++ berdasarkan keperluan aplikasi.

Apakah senario aplikasi biasa Golang dalam pembangunan perisian? Apakah senario aplikasi biasa Golang dalam pembangunan perisian? Dec 28, 2023 am 08:39 AM

Sebagai bahasa pembangunan, Golang mempunyai ciri-ciri kesederhanaan, kecekapan, dan prestasi serentak yang kukuh, jadi ia mempunyai pelbagai senario aplikasi dalam pembangunan perisian. Beberapa senario aplikasi biasa diperkenalkan di bawah. Pengaturcaraan rangkaian Golang sangat baik dalam pengaturcaraan rangkaian dan amat sesuai untuk membina pelayan berkonkurensi tinggi dan berprestasi tinggi. Ia menyediakan perpustakaan rangkaian yang kaya, dan pembangun boleh memprogramkan TCP, HTTP, WebSocket dan protokol lain dengan mudah. Mekanisme Goroutine Golang membolehkan pembangun memprogram dengan mudah

Keseimbangan kemahiran keras dan lembut yang diperlukan untuk pembangun Python Keseimbangan kemahiran keras dan lembut yang diperlukan untuk pembangun Python Sep 10, 2023 am 11:40 AM

Python ialah salah satu bahasa pengaturcaraan yang paling popular hari ini, menarik ramai pembangun untuk menyertai bidang pembangunan Python. Walau bagaimanapun, untuk menjadi pembangun Python yang cemerlang memerlukan bukan sahaja menguasai kemahiran keras bahasa pengaturcaraan, tetapi juga kemahiran lembut tertentu. Artikel ini akan meneroka bagaimana pembangun Python boleh mencapai keseimbangan antara kemahiran keras dan lembut. Dalam dunia pembangunan Python, kemahiran keras merujuk kepada pengetahuan teknikal dan pengaturcaraan yang diperlukan oleh pembangun. Bahasa Python itu sendiri adalah ringkas, fleksibel, mudah dipelajari dan digunakan,

Kemahiran pembangunan jauh dalam pembangunan web Python Kemahiran pembangunan jauh dalam pembangunan web Python Jun 18, 2023 pm 03:06 PM

Sebagai salah satu bahasa pengaturcaraan yang paling popular pada masa ini, Python menunjukkan prestasi yang semakin baik, terutamanya dalam bidang pembangunan web. Untuk meningkatkan kecekapan pembangunan, ramai pembangun suka menggunakan teknologi pembangunan jauh Jadi dalam pembangunan Web Python, bagaimanakah kita boleh menggunakan teknologi pembangunan jauh untuk meningkatkan kecekapan pembangunan? 1. Pemilihan persekitaran pembangunan jauh Untuk pembangunan jauh dalam pembangunan Web Python, pertama sekali kita perlu memilih persekitaran pembangunan jauh yang sesuai. Teknologi pembangunan jauh biasa termasuk yang berikut: SSHSSH Jauh ialah Lin

See all articles