Does Your Top-Level Domain Slow Down Your Website? — Another Look at DNS Cold StartIn my previous blog post, I mentioned a core insight: For small sites with low traffic and geographically dispersed visitors, DNS cold start isn't an occasional "accident" but rather a passive "norm."For most webmasters, site traffic doesn't increase overnight, so our visitors will likely need to go through the complete DNS resolution process. In the previous post, I discussed switching to authori...
DNS Cold Start: The "Stone of Sisyphus" for Small SitesWhen we talk about website performance, we usually focus on front-end rendering, lazy loading of resources, server response time (TTFB), and so on. However, before the user's browser can even begin to request content, there is a crucial part that is rarely mentioned in performance optimization: DNS resolution. For obscure small sites, a "DNS Cache Miss," or what I call a "DNS Cold Start," can beco...
HTTP/2 Server Push Has Effectively "Died" - I Miss ItI've been refactoring my blog recently, and while preparing for autumn recruitment and memorizing technical concepts, I came across HTTP/2 server push. I then attempted to configure HTTP/2 server push for my blog during deployment to further optimize first-screen loading speed.Why HTTP/2 Server Push Could Improve First-Screen Loading SpeedAs shown in the diagram below, in traditional HTTP/1.1, the...
Array Field Filtering Challenges and Performance Optimization in Nuxt Content v3Nuxt Content is a powerful module in the Nuxt ecosystem for handling Markdown, YAML, and other content types. Recently, while migrating my blog from Hexo to Nuxt v4 + Nuxt Content v3, I encountered a tricky issue: the v3 default query API does not directly provide support for "contains" ($contains) operations on array fields.For example, here's the Front Matter of the blog post I'm currently writi...
Post-OCSP Era: How Browsers Address New Certificate Revocation ChallengesIn August 2023, the CA/Browser Forum passed a vote eliminating the requirement for publicly trusted CAs like Let's Encrypt to maintain OCSP servers.In July 2024, Let's Encrypt published a blog post disclosing its plans to shut down its OCSP server.In December of the same year, Let's Encrypt released a timeline for shutting down its OCSP server, with the following key dates:January 30, 2025 - Let's...
First Experience with GitHub Action Self-hosted Runner: Love is Not EasyIn August of this year, a GitHub Organization I'm part of frequently triggered CI during private project development, exhausting the 2,000 minutes of monthly Action quota provided by GitHub for the Free Plan (shared across all private repositories, public repositories don't count). After reviewing the CI workflow setup, which seemed reasonable, I needed to find alternative solutions to provide mor...
How DNS Resolution Latency Destroyed My Image Hosting OptimizationLast summer, I spent considerable time setting up an image hosting solution for my blog. The core goal was geo-distributed DNS resolution to ensure fast image loading for visitors both inside and outside China. The technical approach seemed perfect—until recently, when fellow bloggers reported slow image loading on first visits. That's when I discovered the real problem.955 milliseconds of DNS res...
Vue Markdown Rendering Optimization in Practice (Part 2): Farewell to DOM Manipulation, Embrace AST and Functional RenderingRecap: When morphdom Meets VueIn the previous article, we embarked on a performance optimization journey for Markdown rendering. From the most primitive full refresh with v-html, to block-by-block updates, we eventually brought out the "ultimate weapon" - morphdom. By directly comparing and manipulating the real DOM, it updates the view with minimal cost, perfectly solving the performance bottlene...
Vue Markdown Rendering Optimization in Practice (Part 1): From Brute Force Refresh, Chunked Updates to Morphdom's Elegant TransformationBackgroundIn a recent AI project I took over, I needed to implement a ChatGPT-like conversational interface. The core workflow is: the backend continuously pushes AI-generated Markdown text fragments to the frontend via SSE (Server-Sent Events) protocol. The frontend is responsible for dynamically receiving and concatenating these Markdown fragments, ultimately rendering and displaying the complet...
Migration from node-sass to dart-sass: A Troubleshooting ChronicleUpdate Goalsnode-sass -> sass (dart-sass)Minimize impact, avoid updating other dependency versions unless necessaryBased on the above two conditions, see if we can upgrade the node.js versionReasons to Abandon node-sassnode-sass has been deprecated, dart-sass is the officially recommended successor by Sassnode-sass installation on Windows is very troublesome, requiring both Python 2 and Microsoft ...
12