<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>Web on Snow</title>
        <link>https://SymphonyW.github.io/tags/web/</link>
        <description>Recent content in Web on Snow</description>
        <generator>Hugo -- gohugo.io</generator>
        <language>en</language>
        <copyright>Snow</copyright>
        <lastBuildDate>Thu, 17 Sep 2026 13:55:26 +0800</lastBuildDate><atom:link href="https://SymphonyW.github.io/tags/web/index.xml" rel="self" type="application/rss+xml" /><item>
        <title>Common Image Formats Explained: JPG, PNG, GIF, WebP, AVIF, SVG, and More</title>
        <link>https://SymphonyW.github.io/p/common-image-formats-explained-jpg-png-gif-webp-avif-svg-and-more/</link>
        <pubDate>Thu, 17 Sep 2026 13:55:26 +0800</pubDate>
        
        <guid>https://SymphonyW.github.io/p/common-image-formats-explained-jpg-png-gif-webp-avif-svg-and-more/</guid>
        <description>&lt;img src="https://SymphonyW.github.io/p/common-image-formats-explained-jpg-png-gif-webp-avif-svg-and-more/bg.svg" alt="Featured image of post Common Image Formats Explained: JPG, PNG, GIF, WebP, AVIF, SVG, and More" /&gt;&lt;h1 id=&#34;common-image-formats-explained-jpg-png-gif-webp-avif-svg-and-more&#34;&gt;Common Image Formats Explained: JPG, PNG, GIF, WebP, AVIF, SVG, and More
&lt;/h1&gt;&lt;p&gt;Image formats look simple from the outside: they are just files that display pictures. In practice, each format makes different trade-offs around compression, quality, transparency, animation, compatibility, and editing workflow.&lt;/p&gt;
&lt;p&gt;Choosing the right format is less about memorizing extensions and more about asking: &lt;strong&gt;Is this a photo or a graphic? Does it need transparency? Does it need animation? Is the priority editing quality, web performance, or maximum compatibility?&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;key-concepts-first&#34;&gt;Key Concepts First
&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concept&lt;/th&gt;
&lt;th&gt;Meaning&lt;/th&gt;
&lt;th&gt;Why it matters&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Raster image&lt;/td&gt;
&lt;td&gt;Stores pixels directly&lt;/td&gt;
&lt;td&gt;Great for photos and screenshots, but can blur when scaled up&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Vector image&lt;/td&gt;
&lt;td&gt;Stores shapes, paths, and colors&lt;/td&gt;
&lt;td&gt;Great for logos, icons, and diagrams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lossy compression&lt;/td&gt;
&lt;td&gt;Discards some visual information&lt;/td&gt;
&lt;td&gt;Smaller files, but repeated saving can reduce quality&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Lossless compression&lt;/td&gt;
&lt;td&gt;Preserves the original pixels&lt;/td&gt;
&lt;td&gt;Better for screenshots and text, but may produce larger files&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Alpha channel&lt;/td&gt;
&lt;td&gt;Supports transparency&lt;/td&gt;
&lt;td&gt;Essential for icons, stickers, overlays, and UI assets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Animation&lt;/td&gt;
&lt;td&gt;Stores multiple frames&lt;/td&gt;
&lt;td&gt;Useful for short loops and animated stickers&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A quick rule of thumb: &lt;strong&gt;photos like efficient lossy compression, screenshots like lossless clarity, and logos like vectors.&lt;/strong&gt;&lt;/p&gt;
&lt;h2 id=&#34;common-formats&#34;&gt;Common Formats
&lt;/h2&gt;&lt;h3 id=&#34;jpg--jpeg&#34;&gt;JPG / JPEG
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;JPG&lt;/code&gt; and &lt;code&gt;JPEG&lt;/code&gt; refer to the same format. It is a lossy raster format designed for natural photos.&lt;/p&gt;
&lt;p&gt;Strengths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Small file sizes for photos&lt;/li&gt;
&lt;li&gt;Excellent compatibility&lt;/li&gt;
&lt;li&gt;Good for continuous tones, gradients, and complex photographic detail&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Weaknesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No transparency&lt;/li&gt;
&lt;li&gt;Not ideal for text, UI screenshots, or sharp line art&lt;/li&gt;
&lt;li&gt;Quality degrades after repeated editing and saving&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best for: blog photos, camera exports, product photos, social images.&lt;/p&gt;
&lt;p&gt;Avoid for: logos, transparent assets, screenshots with text, long-term editing masters.&lt;/p&gt;
&lt;h3 id=&#34;png&#34;&gt;PNG
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;PNG&lt;/code&gt; is a lossless raster format. It is widely used for screenshots, UI assets, transparent images, and graphics that need crisp edges.&lt;/p&gt;
&lt;p&gt;Strengths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Lossless image quality&lt;/li&gt;
&lt;li&gt;Supports alpha transparency&lt;/li&gt;
&lt;li&gt;Keeps text, lines, and UI details sharp&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Weaknesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Inefficient for large photos&lt;/li&gt;
&lt;li&gt;Files can become very large&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best for: screenshots, QR codes, transparent assets, interface elements.&lt;/p&gt;
&lt;p&gt;Avoid for: large photo-heavy pages where bandwidth matters.&lt;/p&gt;
&lt;h3 id=&#34;gif&#34;&gt;GIF
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;GIF&lt;/code&gt; is best known for animation. It is old and widely supported, but limited to 256 colors.&lt;/p&gt;
&lt;p&gt;Strengths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Supports simple animation&lt;/li&gt;
&lt;li&gt;Extremely compatible&lt;/li&gt;
&lt;li&gt;Works well for small, simple loops&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Weaknesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Limited color palette&lt;/li&gt;
&lt;li&gt;Often larger than expected&lt;/li&gt;
&lt;li&gt;Weak transparency support&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best for: simple reaction images, tiny looping animations, legacy compatibility.&lt;/p&gt;
&lt;p&gt;Avoid for: long animations, complex color, high-quality motion.&lt;/p&gt;
&lt;h3 id=&#34;webp&#34;&gt;WebP
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;WebP&lt;/code&gt; is a modern web-focused format. It supports lossy compression, lossless compression, transparency, and animation.&lt;/p&gt;
&lt;p&gt;Strengths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Often smaller than JPG, PNG, and GIF at similar visual quality&lt;/li&gt;
&lt;li&gt;Supports transparency and animation&lt;/li&gt;
&lt;li&gt;Very useful for web performance&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Weaknesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Less universal than JPG/PNG in older tools and systems&lt;/li&gt;
&lt;li&gt;Not usually the best archival or print delivery format&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best for: website images, blog assets, thumbnails, transparent web graphics, animated GIF replacement.&lt;/p&gt;
&lt;p&gt;Avoid for: workflows that require every traditional image tool to open the file directly.&lt;/p&gt;
&lt;h3 id=&#34;avif&#34;&gt;AVIF
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;AVIF&lt;/code&gt; is a newer format based on AV1 image coding. It can deliver excellent quality at very small file sizes.&lt;/p&gt;
&lt;p&gt;Strengths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Very high compression efficiency&lt;/li&gt;
&lt;li&gt;Supports transparency, HDR, and high bit depth&lt;/li&gt;
&lt;li&gt;Strong for photos and smooth gradients&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Weaknesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Encoding can be slower&lt;/li&gt;
&lt;li&gt;Older software and content systems may not fully support it&lt;/li&gt;
&lt;li&gt;Tooling is less mature than JPG/PNG&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best for: performance-sensitive web pages, image-heavy sites, mobile traffic optimization.&lt;/p&gt;
&lt;p&gt;Avoid for: maximum-compatibility distribution and complicated editing pipelines.&lt;/p&gt;
&lt;h3 id=&#34;svg&#34;&gt;SVG
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;SVG&lt;/code&gt; is a vector format, not a pixel-based photo format. It describes images using XML shapes, paths, and colors.&lt;/p&gt;
&lt;p&gt;Strengths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Scales without losing quality&lt;/li&gt;
&lt;li&gt;Usually small for simple graphics&lt;/li&gt;
&lt;li&gt;Can be styled with CSS&lt;/li&gt;
&lt;li&gt;Excellent for icons, logos, flowcharts, and diagrams&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Weaknesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Not suitable for photos&lt;/li&gt;
&lt;li&gt;Very complex SVGs can become heavy or slow to render&lt;/li&gt;
&lt;li&gt;Untrusted SVG files need security care&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best for: logos, icons, architecture diagrams, flowcharts, scalable illustrations.&lt;/p&gt;
&lt;p&gt;Avoid for: photographs and realistic textures.&lt;/p&gt;
&lt;h3 id=&#34;heif--heic&#34;&gt;HEIF / HEIC
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;HEIF&lt;/code&gt; is a container format, and &lt;code&gt;HEIC&lt;/code&gt; is a common extension used by Apple devices. It is common in modern phone photography.&lt;/p&gt;
&lt;p&gt;Strengths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Usually smaller than JPG&lt;/li&gt;
&lt;li&gt;Can store richer photo information&lt;/li&gt;
&lt;li&gt;Good for phone photo libraries&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Weaknesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Less convenient for direct web use&lt;/li&gt;
&lt;li&gt;Cross-platform sharing often requires conversion&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best for: phone photo storage and Apple ecosystem workflows.&lt;/p&gt;
&lt;p&gt;Avoid for: direct website publishing and universal file sharing.&lt;/p&gt;
&lt;h3 id=&#34;tiff&#34;&gt;TIFF
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;TIFF&lt;/code&gt; is common in scanning, publishing, printing, medical imaging, and professional archiving.&lt;/p&gt;
&lt;p&gt;Strengths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;High fidelity&lt;/li&gt;
&lt;li&gt;Supports high bit depth and color management&lt;/li&gt;
&lt;li&gt;Good for professional archives and print pipelines&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Weaknesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Large files&lt;/li&gt;
&lt;li&gt;Poor fit for the web&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best for: print delivery, scanning, archival images, professional editing intermediates.&lt;/p&gt;
&lt;p&gt;Avoid for: web pages, casual sharing, blog images.&lt;/p&gt;
&lt;h3 id=&#34;bmp&#34;&gt;BMP
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;BMP&lt;/code&gt; is an older Windows bitmap format. It is simple, but usually inefficient.&lt;/p&gt;
&lt;p&gt;Strengths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Simple structure&lt;/li&gt;
&lt;li&gt;Good compatibility in old Windows workflows&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Weaknesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Large files&lt;/li&gt;
&lt;li&gt;Poor for network delivery&lt;/li&gt;
&lt;li&gt;Rarely needed in modern web work&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best for: legacy software compatibility and some image-processing tests.&lt;/p&gt;
&lt;p&gt;Avoid for: websites, blogs, and everyday sharing.&lt;/p&gt;
&lt;h3 id=&#34;raw&#34;&gt;RAW
&lt;/h3&gt;&lt;p&gt;&lt;code&gt;RAW&lt;/code&gt; refers to camera raw data formats such as &lt;code&gt;.cr2&lt;/code&gt;, &lt;code&gt;.nef&lt;/code&gt;, &lt;code&gt;.arw&lt;/code&gt;, and &lt;code&gt;.dng&lt;/code&gt;. It is closer to a digital negative than a finished image.&lt;/p&gt;
&lt;p&gt;Strengths:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Preserves the most original sensor information&lt;/li&gt;
&lt;li&gt;Excellent flexibility for exposure, white balance, and color grading&lt;/li&gt;
&lt;li&gt;Ideal for professional photo editing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Weaknesses:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Large files&lt;/li&gt;
&lt;li&gt;Requires dedicated software&lt;/li&gt;
&lt;li&gt;Not suitable for direct web publishing&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Best for: photography editing and professional source files.&lt;/p&gt;
&lt;p&gt;Avoid for: final delivery, chat sharing, and web uploads.&lt;/p&gt;
&lt;h2 id=&#34;quick-comparison&#34;&gt;Quick Comparison
&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Format&lt;/th&gt;
&lt;th&gt;Compression&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;Transparency&lt;/th&gt;
&lt;th style=&#34;text-align:right&#34;&gt;Animation&lt;/th&gt;
&lt;th&gt;Main strength&lt;/th&gt;
&lt;th&gt;Main weakness&lt;/th&gt;
&lt;th&gt;Best for&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;JPG/JPEG&lt;/td&gt;
&lt;td&gt;Lossy&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;No&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;No&lt;/td&gt;
&lt;td&gt;Small photos, universal support&lt;/td&gt;
&lt;td&gt;No transparency, blurry text edges&lt;/td&gt;
&lt;td&gt;Photos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;PNG&lt;/td&gt;
&lt;td&gt;Lossless&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Yes&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Usually no&lt;/td&gt;
&lt;td&gt;Sharp details and transparency&lt;/td&gt;
&lt;td&gt;Large for photos&lt;/td&gt;
&lt;td&gt;Screenshots, UI assets&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;GIF&lt;/td&gt;
&lt;td&gt;Lossless but color-limited&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Basic&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Yes&lt;/td&gt;
&lt;td&gt;Legacy animation support&lt;/td&gt;
&lt;td&gt;256 colors, inefficient&lt;/td&gt;
&lt;td&gt;Simple loops&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;WebP&lt;/td&gt;
&lt;td&gt;Lossy/lossless&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Yes&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Yes&lt;/td&gt;
&lt;td&gt;Strong web optimization&lt;/td&gt;
&lt;td&gt;Older tool compatibility&lt;/td&gt;
&lt;td&gt;Web images&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;AVIF&lt;/td&gt;
&lt;td&gt;Lossy/lossless&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Yes&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Possible&lt;/td&gt;
&lt;td&gt;Excellent compression&lt;/td&gt;
&lt;td&gt;Slower encoding, newer ecosystem&lt;/td&gt;
&lt;td&gt;High-performance web images&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SVG&lt;/td&gt;
&lt;td&gt;Vector&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Yes&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Possible&lt;/td&gt;
&lt;td&gt;Scales perfectly&lt;/td&gt;
&lt;td&gt;Not for photos&lt;/td&gt;
&lt;td&gt;Icons, logos, diagrams&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HEIC&lt;/td&gt;
&lt;td&gt;Lossy/lossless&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Possible&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Possible&lt;/td&gt;
&lt;td&gt;Efficient phone storage&lt;/td&gt;
&lt;td&gt;Sharing compatibility&lt;/td&gt;
&lt;td&gt;Phone photos&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;TIFF&lt;/td&gt;
&lt;td&gt;Often lossless&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Possible&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Multipage-oriented&lt;/td&gt;
&lt;td&gt;Professional fidelity&lt;/td&gt;
&lt;td&gt;Large files&lt;/td&gt;
&lt;td&gt;Print, scans, archives&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;BMP&lt;/td&gt;
&lt;td&gt;Usually uncompressed&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Possible&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;No&lt;/td&gt;
&lt;td&gt;Simple legacy format&lt;/td&gt;
&lt;td&gt;Huge files&lt;/td&gt;
&lt;td&gt;Legacy cases&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;RAW&lt;/td&gt;
&lt;td&gt;Original sensor data&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;Not a final asset&lt;/td&gt;
&lt;td style=&#34;text-align:right&#34;&gt;No&lt;/td&gt;
&lt;td&gt;Maximum editing latitude&lt;/td&gt;
&lt;td&gt;Needs processing&lt;/td&gt;
&lt;td&gt;Photo source files&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;practical-choices&#34;&gt;Practical Choices
&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Scenario&lt;/th&gt;
&lt;th&gt;Recommended format&lt;/th&gt;
&lt;th&gt;Why&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Blog covers and photography&lt;/td&gt;
&lt;td&gt;JPG / WebP / AVIF&lt;/td&gt;
&lt;td&gt;Good balance of quality and size&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Screenshots and code captures&lt;/td&gt;
&lt;td&gt;PNG / lossless WebP&lt;/td&gt;
&lt;td&gt;Keeps text and lines sharp&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Logos and icons&lt;/td&gt;
&lt;td&gt;SVG&lt;/td&gt;
&lt;td&gt;Scales cleanly&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Transparent overlays&lt;/td&gt;
&lt;td&gt;PNG / WebP&lt;/td&gt;
&lt;td&gt;Supports alpha transparency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Simple animated stickers&lt;/td&gt;
&lt;td&gt;GIF / WebP&lt;/td&gt;
&lt;td&gt;GIF is compatible, WebP is more efficient&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Long animations or video clips&lt;/td&gt;
&lt;td&gt;MP4 / WebM&lt;/td&gt;
&lt;td&gt;Much better than GIF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Phone photo storage&lt;/td&gt;
&lt;td&gt;HEIC / JPG&lt;/td&gt;
&lt;td&gt;HEIC saves space, JPG shares easily&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Scans and print delivery&lt;/td&gt;
&lt;td&gt;TIFF / PNG&lt;/td&gt;
&lt;td&gt;Preserves detail&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Photography source files&lt;/td&gt;
&lt;td&gt;RAW / DNG&lt;/td&gt;
&lt;td&gt;Keeps editing flexibility&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h2 id=&#34;summary&#34;&gt;Summary
&lt;/h2&gt;&lt;p&gt;There is no single best image format. There is only the best fit for the job.&lt;/p&gt;
&lt;p&gt;Use JPG for photos, PNG for crisp screenshots and transparent assets, GIF for simple legacy animation, WebP and AVIF for modern web optimization, SVG for scalable icons and diagrams, HEIC for phone storage, TIFF and RAW for professional workflows, and BMP only when legacy compatibility calls for it.&lt;/p&gt;
&lt;p&gt;The simplest decision rule is:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Choose by content: photos need compression, screenshots need clarity, icons need vectors, animations need efficiency, and professional source files need editing latitude.&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
</description>
        </item>
        <item>
        <title>HTTP 和 HTTPS 的区别：从明文到加密，一篇讲清楚</title>
        <link>https://SymphonyW.github.io/p/http-vs-https/</link>
        <pubDate>Mon, 10 Aug 2026 21:40:29 +0800</pubDate>
        
        <guid>https://SymphonyW.github.io/p/http-vs-https/</guid>
        <description>&lt;img src="https://SymphonyW.github.io/p/http-vs-https/bg.png" alt="Featured image of post HTTP 和 HTTPS 的区别：从明文到加密，一篇讲清楚" /&gt;&lt;h1 id=&#34;http-和-https-的区别从明文到加密一篇讲清楚&#34;&gt;HTTP 和 HTTPS 的区别：从明文到加密，一篇讲清楚
&lt;/h1&gt;&lt;blockquote&gt;
&lt;p&gt;HTTP 和 HTTPS 的核心区别不是“能不能打开网页”，而是：&lt;strong&gt;网页数据在网络上传输时，是否有加密、身份认证和完整性保护。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/p/http-vs-https/bg.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/p/http-vs-https/bg.png&#34; alt=&#34;HTTP 与 HTTPS 的整体区别&#34; width=&#34;1600&#34; height=&#34;900&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;177&#34; data-flex-basis=&#34;426px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;一句话先记住：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;HTTPS = HTTP + TLS。&lt;/strong&gt;&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;也就是说，HTTPS 并没有推翻 HTTP 的请求方法、状态码、Header、Cookie、缓存这些机制。它是在 HTTP 通信外面加了一层 TLS 安全通道，让浏览器和服务器先建立可信、加密的连接，然后再传 HTTP 数据。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;先看最直接的区别&#34;&gt;先看最直接的区别
&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;对比项&lt;/th&gt;
&lt;th&gt;HTTP&lt;/th&gt;
&lt;th&gt;HTTPS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;URL 前缀&lt;/td&gt;
&lt;td&gt;&lt;code&gt;http://&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;&lt;code&gt;https://&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;默认端口&lt;/td&gt;
&lt;td&gt;80&lt;/td&gt;
&lt;td&gt;443&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;传输内容&lt;/td&gt;
&lt;td&gt;明文&lt;/td&gt;
&lt;td&gt;经过 TLS 加密&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;身份认证&lt;/td&gt;
&lt;td&gt;无法证明服务器真实身份&lt;/td&gt;
&lt;td&gt;通过证书证明服务器身份&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;完整性保护&lt;/td&gt;
&lt;td&gt;容易被中间人篡改&lt;/td&gt;
&lt;td&gt;篡改会被发现&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;浏览器提示&lt;/td&gt;
&lt;td&gt;常显示“不安全”&lt;/td&gt;
&lt;td&gt;显示安全连接标识&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;适合场景&lt;/td&gt;
&lt;td&gt;本地开发、临时内网测试&lt;/td&gt;
&lt;td&gt;生产网站、登录、支付、接口、后台系统&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;很多初学者会把 HTTPS 理解成“高级版 HTTP”。这个说法不算错，但更准确的理解是：&lt;strong&gt;HTTP 负责表达网页请求和响应，TLS 负责保护这段通信过程。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;http-做了什么&#34;&gt;HTTP 做了什么
&lt;/h2&gt;&lt;p&gt;HTTP，全称是 HyperText Transfer Protocol，超文本传输协议。它定义了浏览器和服务器之间如何对话。&lt;/p&gt;
&lt;p&gt;例如你访问一个页面时，浏览器可能会发出这样的请求：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-http&#34; data-lang=&#34;http&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;nf&#34;&gt;GET&lt;/span&gt; &lt;span class=&#34;nn&#34;&gt;/articles/http-vs-https&lt;/span&gt; &lt;span class=&#34;kr&#34;&gt;HTTP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1.1&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Host&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;l&#34;&gt;example.com&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;User-Agent&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;l&#34;&gt;Chrome&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Accept&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;l&#34;&gt;text/html&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;服务器再返回：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt;1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;6
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-http&#34; data-lang=&#34;http&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;kr&#34;&gt;HTTP&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;/&lt;/span&gt;&lt;span class=&#34;m&#34;&gt;1.1&lt;/span&gt; &lt;span class=&#34;m&#34;&gt;200&lt;/span&gt; &lt;span class=&#34;ne&#34;&gt;OK&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;n&#34;&gt;Content-Type&lt;/span&gt;&lt;span class=&#34;o&#34;&gt;:&lt;/span&gt; &lt;span class=&#34;l&#34;&gt;text/html&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;  &lt;span class=&#34;p&#34;&gt;&amp;lt;&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;Hello HTTPS&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;body&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;&amp;lt;/&lt;/span&gt;&lt;span class=&#34;nt&#34;&gt;html&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;&amp;gt;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;这套格式本身没有问题。HTTP 的价值在于简单、通用、可扩展，Web 上的请求方法、状态码、Header、Cookie、缓存控制，都是它的核心组成部分。&lt;/p&gt;
&lt;p&gt;问题在于：&lt;strong&gt;如果只使用 HTTP，这些内容会以明文形式经过网络。&lt;/strong&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;明文传输为什么危险&#34;&gt;明文传输为什么危险
&lt;/h2&gt;&lt;p&gt;假设你在咖啡店 Wi-Fi 下登录一个只支持 HTTP 的网站，你输入的用户名、Cookie、请求路径和响应内容，都可能被同一网络里的攻击者看到。如果攻击者进一步做中间人攻击，还可能把服务器返回给你的页面内容替换掉。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/p/http-vs-https/plain-vs-encrypted.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/p/http-vs-https/plain-vs-encrypted.png&#34; alt=&#34;HTTP 明文与 HTTPS 密文的区别&#34; width=&#34;1600&#34; height=&#34;900&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;177&#34; data-flex-basis=&#34;426px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;HTTP 明文带来的典型风险有三个：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;风险&lt;/th&gt;
&lt;th&gt;含义&lt;/th&gt;
&lt;th&gt;例子&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;窃听&lt;/td&gt;
&lt;td&gt;第三方可以读到传输内容&lt;/td&gt;
&lt;td&gt;看到登录表单、Cookie、接口返回&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;篡改&lt;/td&gt;
&lt;td&gt;第三方可以修改传输内容&lt;/td&gt;
&lt;td&gt;注入广告、替换下载链接、改写脚本&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;冒充&lt;/td&gt;
&lt;td&gt;用户无法确认对面是不是真服务器&lt;/td&gt;
&lt;td&gt;被引导到伪造服务器却不容易察觉&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;所以，HTTP 最大的问题不是“协议设计得不好”，而是它默认不解决安全传输问题。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;https-加上的-tls-是什么&#34;&gt;HTTPS 加上的 TLS 是什么
&lt;/h2&gt;&lt;p&gt;TLS，全称是 Transport Layer Security，传输层安全协议。HTTPS 使用 TLS 在浏览器和服务器之间建立安全通道。&lt;/p&gt;
&lt;p&gt;TLS 主要提供三件事：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;能力&lt;/th&gt;
&lt;th&gt;解决的问题&lt;/th&gt;
&lt;th&gt;可以怎么理解&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;加密&lt;/td&gt;
&lt;td&gt;防止第三方看懂内容&lt;/td&gt;
&lt;td&gt;即使抓到数据包，也只能看到密文&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;身份认证&lt;/td&gt;
&lt;td&gt;防止连到假服务器&lt;/td&gt;
&lt;td&gt;浏览器会检查服务器证书是否可信&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;完整性校验&lt;/td&gt;
&lt;td&gt;防止内容被偷偷改掉&lt;/td&gt;
&lt;td&gt;数据一旦被篡改，校验会失败&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;因此，HTTPS 传的仍然是 HTTP 请求和响应，只是这些 HTTP 数据会先被 TLS 加密，再放到网络里传输。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;tls-握手大致怎么发生&#34;&gt;TLS 握手大致怎么发生
&lt;/h2&gt;&lt;p&gt;在浏览器真正发送 HTTP 请求之前，HTTPS 会先进行 TLS 握手。握手的目的不是传业务数据，而是完成几件关键准备：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;双方确认使用哪个 TLS 版本和加密算法。&lt;/li&gt;
&lt;li&gt;浏览器验证服务器证书。&lt;/li&gt;
&lt;li&gt;浏览器和服务器协商出后续通信使用的会话密钥。&lt;/li&gt;
&lt;li&gt;握手完成后，HTTP 请求和响应都走加密通道。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/p/http-vs-https/tls-handshake.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/p/http-vs-https/tls-handshake.png&#34; alt=&#34;HTTPS 建连时 TLS 握手的简化流程&#34; width=&#34;1600&#34; height=&#34;900&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;177&#34; data-flex-basis=&#34;426px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;可以把这个过程理解成：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;两个人先确认对方身份，再商量一个只有双方知道的临时密码。之后真正聊天时，所有内容都用这个临时密码加密。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;现代 HTTPS 通常使用 TLS 1.2 或 TLS 1.3。TLS 1.3 对握手流程做了简化，配合会话恢复、HTTP/2、HTTP/3 和 CDN，HTTPS 的性能成本已经远小于早期印象里的“很慢”。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;证书到底证明了什么&#34;&gt;证书到底证明了什么
&lt;/h2&gt;&lt;p&gt;很多人看到浏览器地址栏里的安全标识，会下意识理解成“这个网站一定是好网站”。这其实是误解。&lt;/p&gt;
&lt;p&gt;HTTPS 证书主要证明的是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;你当前连接到的服务器，确实拥有这个域名对应证书中的私钥，并且这个证书能沿着可信 CA 链被浏览器验证。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;它不保证网站内容一定真实、商家一定可靠、业务一定没有漏洞。钓鱼网站同样可以申请 HTTPS 证书，所以 HTTPS 只能说明“连接安全”，不能说明“网站本身可信”。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/p/http-vs-https/certificate-chain.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/p/http-vs-https/certificate-chain.png&#34; alt=&#34;HTTPS 证书信任链和浏览器校验过程&#34; width=&#34;1600&#34; height=&#34;900&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;177&#34; data-flex-basis=&#34;426px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;浏览器通常会检查这些内容：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;检查项&lt;/th&gt;
&lt;th&gt;为什么重要&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;域名是否匹配&lt;/td&gt;
&lt;td&gt;&lt;code&gt;example.com&lt;/code&gt; 的证书不能拿去冒充 &lt;code&gt;bank.com&lt;/code&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;证书是否过期&lt;/td&gt;
&lt;td&gt;过期证书不应继续被信任&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;签名链是否可信&lt;/td&gt;
&lt;td&gt;证书需要能追溯到浏览器信任的根 CA&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;证书是否被吊销&lt;/td&gt;
&lt;td&gt;泄露或失效的证书应被拒绝&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;通过这些检查后，浏览器才会继续完成 TLS 握手，并把连接标记为安全。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;http-和-https-的关键差异&#34;&gt;HTTP 和 HTTPS 的关键差异
&lt;/h2&gt;&lt;p&gt;从开发和运维角度看，最值得关注的是下面这些差异。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;维度&lt;/th&gt;
&lt;th&gt;HTTP&lt;/th&gt;
&lt;th&gt;HTTPS&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;安全性&lt;/td&gt;
&lt;td&gt;无加密、无认证、无完整性保护&lt;/td&gt;
&lt;td&gt;有加密、认证和完整性保护&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;请求格式&lt;/td&gt;
&lt;td&gt;HTTP 方法、Header、Body&lt;/td&gt;
&lt;td&gt;逻辑上仍是 HTTP 方法、Header、Body&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;传输层&lt;/td&gt;
&lt;td&gt;通常直接跑在 TCP 上&lt;/td&gt;
&lt;td&gt;HTTP 先进入 TLS，再跑在 TCP 或 QUIC 上&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;证书&lt;/td&gt;
&lt;td&gt;不需要证书&lt;/td&gt;
&lt;td&gt;需要有效 TLS 证书&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;端口&lt;/td&gt;
&lt;td&gt;默认 80&lt;/td&gt;
&lt;td&gt;默认 443&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;SEO 和浏览器策略&lt;/td&gt;
&lt;td&gt;搜索和浏览器体验不友好&lt;/td&gt;
&lt;td&gt;更符合现代 Web 默认要求&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Web 能力&lt;/td&gt;
&lt;td&gt;一些能力受限&lt;/td&gt;
&lt;td&gt;Service Worker、地理位置、剪贴板等能力通常要求安全上下文&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;迁移成本&lt;/td&gt;
&lt;td&gt;配置简单&lt;/td&gt;
&lt;td&gt;需要证书、跳转、混合内容修复和监控&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;这里有一个容易忽略的点：&lt;strong&gt;HTTPS 不会改变 HTTP 的语义。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;code&gt;GET&lt;/code&gt; 还是 &lt;code&gt;GET&lt;/code&gt;，&lt;code&gt;POST&lt;/code&gt; 还是 &lt;code&gt;POST&lt;/code&gt;，&lt;code&gt;404&lt;/code&gt; 还是 &lt;code&gt;404&lt;/code&gt;，&lt;code&gt;Cookie&lt;/code&gt; 还是 &lt;code&gt;Cookie&lt;/code&gt;。它改变的是这些数据穿过网络时的保护方式。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;https-会不会更慢&#34;&gt;HTTPS 会不会更慢
&lt;/h2&gt;&lt;p&gt;早期 HTTPS 的确会带来明显额外开销，因为 TLS 握手需要额外往返，还要做加解密。但今天不能简单地说“HTTPS 一定慢”。&lt;/p&gt;
&lt;p&gt;原因主要有几个：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;TLS 1.3 减少了握手成本&lt;/strong&gt;：建立连接需要的往返次数更少。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;会话恢复可以复用安全参数&lt;/strong&gt;：老用户再次访问时不必完整握手。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTP/2 和 HTTP/3 改善了传输效率&lt;/strong&gt;：多路复用减少了大量小请求的阻塞。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;硬件和软件加密性能已经很高&lt;/strong&gt;：常见服务器处理 TLS 的成本通常不是主要瓶颈。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;CDN 可以承担 TLS 终止&lt;/strong&gt;：证书、握手和边缘节点优化可以由 CDN 处理。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;更实际的结论是：&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;对现代生产网站来说，HTTPS 的安全收益远大于额外成本。性能优化应该建立在 HTTPS 之上，而不是为了省一点握手成本退回 HTTP。&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2 id=&#34;https-能保护什么保护不了什么&#34;&gt;HTTPS 能保护什么，保护不了什么
&lt;/h2&gt;&lt;p&gt;HTTPS 很重要，但不要把它当成万能安全方案。&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;问题&lt;/th&gt;
&lt;th&gt;HTTPS 能否解决&lt;/th&gt;
&lt;th&gt;说明&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;第三方读取请求路径、Cookie、请求体&lt;/td&gt;
&lt;td&gt;能&lt;/td&gt;
&lt;td&gt;这些内容会被 TLS 加密&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;第三方篡改页面、脚本、接口响应&lt;/td&gt;
&lt;td&gt;能&lt;/td&gt;
&lt;td&gt;篡改通常会导致校验失败&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;证明服务器身份&lt;/td&gt;
&lt;td&gt;能&lt;/td&gt;
&lt;td&gt;前提是证书链和域名校验通过&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;隐藏访问的网站 IP&lt;/td&gt;
&lt;td&gt;不能&lt;/td&gt;
&lt;td&gt;IP 层仍需要知道连接到哪里&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;完全隐藏访问域名&lt;/td&gt;
&lt;td&gt;不一定&lt;/td&gt;
&lt;td&gt;DNS、SNI 等环节在不同配置下可能暴露域名信息&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;防止网站自身泄露数据&lt;/td&gt;
&lt;td&gt;不能&lt;/td&gt;
&lt;td&gt;服务端漏洞、日志泄露、数据库泄露仍需单独治理&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;防止用户访问钓鱼网站&lt;/td&gt;
&lt;td&gt;不能完全防止&lt;/td&gt;
&lt;td&gt;钓鱼网站也可以有 HTTPS 证书&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;因此，HTTPS 是 Web 安全的地基，但不是整栋楼。登录鉴权、权限控制、输入校验、XSS 防护、CSRF 防护、日志脱敏、密钥管理，这些仍然要单独做好。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;从-http-迁移到-https&#34;&gt;从 HTTP 迁移到 HTTPS
&lt;/h2&gt;&lt;p&gt;给网站加 HTTPS，不只是把证书装上去。生产环境里，最常见的问题反而出在跳转、混合内容和缓存策略上。&lt;/p&gt;
&lt;p&gt;&lt;a href=&#34;https://SymphonyW.github.io/p/http-vs-https/migration-checklist.png&#34; target=&#34;_blank&#34; rel=&#34;noopener noreferrer&#34;&gt;&lt;img src=&#34;https://SymphonyW.github.io/p/http-vs-https/migration-checklist.png&#34; alt=&#34;从 HTTP 迁移到 HTTPS 的关键步骤&#34; width=&#34;1600&#34; height=&#34;900&#34; loading=&#34;lazy&#34; decoding=&#34;async&#34; class=&#34;gallery-image&#34; data-flex-grow=&#34;177&#34; data-flex-basis=&#34;426px&#34;&gt;&lt;/a&gt;
&lt;/p&gt;
&lt;p&gt;一个比较稳妥的迁移清单如下：&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;步骤&lt;/th&gt;
&lt;th&gt;要做什么&lt;/th&gt;
&lt;th&gt;常见坑&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;申请证书&lt;/td&gt;
&lt;td&gt;使用 Let&amp;rsquo;s Encrypt、云厂商证书或企业 CA&lt;/td&gt;
&lt;td&gt;忘记配置自动续期&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;配置 HTTPS 站点&lt;/td&gt;
&lt;td&gt;监听 443，并绑定证书和私钥&lt;/td&gt;
&lt;td&gt;证书链不完整&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HTTP 跳转 HTTPS&lt;/td&gt;
&lt;td&gt;80 端口统一 301 到 443&lt;/td&gt;
&lt;td&gt;跳转循环、代理头配置错误&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;修复混合内容&lt;/td&gt;
&lt;td&gt;页面里的图片、脚本、接口都改成 HTTPS&lt;/td&gt;
&lt;td&gt;浏览器拦截 &lt;code&gt;http://&lt;/code&gt; 脚本和接口&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;设置 Cookie 属性&lt;/td&gt;
&lt;td&gt;登录 Cookie 加 &lt;code&gt;Secure&lt;/code&gt;、&lt;code&gt;HttpOnly&lt;/code&gt;、&lt;code&gt;SameSite&lt;/code&gt;&lt;/td&gt;
&lt;td&gt;HTTPS 下 Cookie 策略不一致&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;谨慎开启 HSTS&lt;/td&gt;
&lt;td&gt;确认全站和子域名都支持 HTTPS 后再开启&lt;/td&gt;
&lt;td&gt;一旦配置过猛，回滚会很麻烦&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;更新外部入口&lt;/td&gt;
&lt;td&gt;CDN、反向代理、站点地图、canonical、监控&lt;/td&gt;
&lt;td&gt;搜索引擎和监控还在访问旧地址&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Nginx 里一个非常简化的跳转配置类似这样：&lt;/p&gt;
&lt;div class=&#34;highlight&#34;&gt;&lt;div class=&#34;chroma&#34;&gt;
&lt;table class=&#34;lntable&#34;&gt;&lt;tr&gt;&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code&gt;&lt;span class=&#34;lnt&#34;&gt; 1
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 2
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 3
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 4
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 5
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 6
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 7
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 8
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt; 9
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;10
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;11
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;12
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;13
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;14
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;15
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;16
&lt;/span&gt;&lt;span class=&#34;lnt&#34;&gt;17
&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;
&lt;td class=&#34;lntd&#34;&gt;
&lt;pre tabindex=&#34;0&#34; class=&#34;chroma&#34;&gt;&lt;code class=&#34;language-nginx&#34; data-lang=&#34;nginx&#34;&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;listen&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;80&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;server_name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;example.com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;return&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;301&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;https://&lt;/span&gt;&lt;span class=&#34;nv&#34;&gt;$host$request_uri&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;k&#34;&gt;server&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;listen&lt;/span&gt; &lt;span class=&#34;mi&#34;&gt;443&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;ssl&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;http2&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;server_name&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;example.com&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;ssl_certificate&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/etc/nginx/certs/example.com/fullchain.pem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;ssl_certificate_key&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/etc/nginx/certs/example.com/privkey.pem&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;kn&#34;&gt;location&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;/&lt;/span&gt; &lt;span class=&#34;p&#34;&gt;{&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;        &lt;span class=&#34;kn&#34;&gt;proxy_pass&lt;/span&gt; &lt;span class=&#34;s&#34;&gt;http://app&lt;/span&gt;&lt;span class=&#34;p&#34;&gt;;&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;    &lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;span class=&#34;line&#34;&gt;&lt;span class=&#34;cl&#34;&gt;&lt;span class=&#34;p&#34;&gt;}&lt;/span&gt;
&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;/div&gt;&lt;p&gt;真实线上配置还要结合负载均衡、CDN 回源、证书续期、日志、监控、灰度和回滚策略一起看。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;常见误区&#34;&gt;常见误区
&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;误区一：HTTPS 网站一定安全。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不对。HTTPS 只能说明连接被加密且证书校验通过，网站是否有漏洞、业务是否可信，是另一回事。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;误区二：有 HTTPS 就不会泄露任何信息。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不对。HTTPS 保护的是应用层内容，但 IP 地址、流量大小、访问时间等元数据仍可能被观察到。域名是否暴露还取决于 DNS、SNI、ECH、代理等具体配置。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;误区三：接口在内网就不用 HTTPS。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不一定。内网也可能有越权访问、旁路抓包、错误代理、日志泄露等风险。涉及账号、Token、用户数据、后台管理的接口，即使在内网也建议使用 HTTPS 或等价的传输层保护。&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;误区四：HTTPS 配好一次就结束。&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;不对。证书会过期，TLS 配置会老化，依赖的加密套件也可能不再推荐。证书续期、过期告警和安全扫描都应该纳入运维流程。&lt;/p&gt;
&lt;hr&gt;
&lt;h2 id=&#34;总结&#34;&gt;总结
&lt;/h2&gt;&lt;p&gt;HTTP 和 HTTPS 的关系可以用三句话收束：&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;HTTP 负责“怎么表达请求和响应”&lt;/strong&gt;，例如方法、状态码、Header、Body。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;HTTPS 负责“安全地传这些 HTTP 数据”&lt;/strong&gt;，核心靠 TLS 提供加密、认证和完整性保护。&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;生产环境默认应该使用 HTTPS&lt;/strong&gt;，HTTP 最多作为跳转入口，或者用于受控的本地开发和临时测试。&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;所以，下次再看到 &lt;code&gt;http://&lt;/code&gt; 和 &lt;code&gt;https://&lt;/code&gt;，不要只把它们当成 URL 前缀的差异。真正的区别在于：你的数据是裸奔在网络里，还是走在一条经过身份校验和加密保护的通道里。&lt;/p&gt;
</description>
        </item>
        
    </channel>
</rss>
