John Cox

Blogs · @wyome

Tagged performance · everything

24 ways: Speed Up Your Site with Delayed Content

Popular articles accumulate hundreds of comments, each with a Gravatar avatar image that creates a separate HTTP request, significantly slowing page load times. Hammond proposes removing avatar images from the initial HTML and storing their URLs in HTML5 data attributes, then using JavaScript to insert the images only after the page fully loads, reducing rendering time from over three seconds to under one. This technique generalizes to any non-critical images that can be deferred, allowing important content to display quickly while peripheral elements load in the background.

Permalink

Performance Calendar » localStorage Read Performance

localStorage operations are orders of magnitude slower than reading from memory because they require disk access and inter-tab synchronization, making the performance cost substantial and variable depending on browser load. Rather than worrying about data size, the key optimization is minimizing the number of read operations—storing as much data as possible in single keys and caching values in memory reduces the cumulative expense of repeated getItem() calls.

Permalink

Optimize Table, Speed up your MySQL Database | Web Development Blog

Database table overhead from transactions slows down web applications like WordPress, and this tutorial provides a PHP script using MySQLi to automatically optimize all tables across all databases by identifying and defragmenting tables with unused space. The script can be scheduled to run daily via cron job and configured to email reports of optimized tables and any errors, with the credentials stored securely above the public directory. The approach works for both VPS/dedicated servers and shared hosting environments, though shared hosting users may need their provider to create a database user with appropriate permissions.

Permalink

Seven Mistakes That Make Websites Slow » SitePoint

Holiday traffic surges can overwhelm unprepared websites, causing slowdowns that directly harm conversion rates and user retention—users now abandon sites that take more than two seconds to load. The majority of page load time (over 90%) occurs after the HTML arrives at the browser as it fetches and processes assets like scripts, images, and stylesheets, making the structure and number of HTTP requests critical bottlenecks. The piece outlines seven major performance mistakes—excessive HTTP requests, underutilized client-side processing, poor parallel request handling, inadequate caching, slow third-party widgets, oversized responses, and ignoring geographic distribution—along with specific technical solutions for each, from image sprites and compression to content delivery networks and asynchronous script loading.

Permalink

Asynchronous UIs - the future of web user interfaces

This article argues that web applications should adopt asynchronous user interfaces (AUIs) that respond instantly to user interactions without blocking for server confirmation, since perceived speed dramatically affects user engagement and revenue. The author demonstrates how to decouple client-side state updates from background Ajax requests, allowing users to continue interacting with the app immediately while data syncs to the server asynchronously. He addresses practical concerns like validation failures, network errors, and request ordering by proposing client-side validation, error handlers, temporary client IDs, and request pipelining as solutions.

Permalink

jQuery Grid Plugin

Guriddo jqGrid JavaScript version 5.9.0 introduces critical security and performance improvements by removing all eval-based code execution to enable Content Security Policy compliance, completely rewriting the virtual scroll module to support variable row heights, and rewriting state management to eliminate unsafe function parsing while maintaining backward compatibility. The release also includes numerous bug fixes and accessibility enhancements across frozen columns, pivot grids, tree grids, and form editing, plus the addition of ARIA labels and improved screen reader support throughout the interface.

Permalink

Optimizing the MySQL IN() Comparison Operations Which Include the Indexed Field – MySQL Diary

When a MySQL IN() clause references a field that's part of the query's index, the database evaluates the full result set for each IN value before merging and limiting results, which is expensive on large tables. Replacing the IN clause with a UNION ALL of separate queries—each with its own LIMIT—forces MySQL to limit results at each step before merging, dramatically improving performance. The post demonstrates this with a concrete example where `WHERE b=4 AND c IN (1,3,5,7,9)` becomes five separate queries joined with UNION ALL, each limited to 100 rows before the final merge and sort.

Permalink

HTML5 Rocks - Improving the Performance of your HTML5 App

Smoothness in web animations depends on consistent frame rates rather than high absolute fps—true 30 fps is preferable to 60 fps with dropped frames since users perceive jaggedness. The article provides techniques for improving animation performance through GPU acceleration, CSS transitions, proper DOM interaction patterns, and profiling strategies that identify bottlenecks in JavaScript and browser rendering cycles. Key optimization tactics include caching DOM nodes, batching DOM reads and writes, using CSS transforms instead of position changes, and leveraging requestAnimationFrame for JavaScript animations.

Permalink

Using Flexviews – part one, introduction to materialized views - MySQL Performance Blog

Flexviews is a tool that enables incrementally refreshable materialized views in MySQL—pre-computed, stored query results that update only the changed rows rather than recalculating from scratch. Unlike regular views (which recompute on every access) or complete materialized view refreshes (which rebuild entirely), incremental refresh examines only rows that changed since the last refresh, making it orders of magnitude faster for large datasets while maintaining transactional consistency across multiple views. The tool works through three mechanisms: capturing what changed in the database, computing the differences those changes produce, and applying those differences to update the stored results.

Permalink

Speeding Up Your Website’s Database - Smashing Coding

While Google's inclusion of page speed in search rankings has focused attention on file sizes and server settings, the actual assembly of pages on the server—particularly database queries in PHP or ASP—often receives overlooked scrutiny. This article provides practical methods to identify and eliminate database bottlenecks, from simple techniques like indexing frequently queried columns and using JOINs to combine multiple queries, to more advanced approaches like application-level caching and query optimization. The piece includes diagnostic tools, code examples for timing database performance, and explains when common optimization strategies like table optimization and MySQL caching actually help versus when they're ineffective.

Permalink

Speeding Up Your Website’s Database - Smashing Magazine

While website speed improvements typically focus on file sizes and server settings, database query optimization is equally critical—a homepage might load in 1.5 seconds while slow database queries bog down search or product pages. The article provides practical techniques for identifying and fixing database bottlenecks, starting with simple methods like adding indexes to frequently queried columns (which can speed up queries 100+ times) and progressing to more complex solutions like restructuring queries with JOINs, caching results, and optimizing table storage. These approaches help developers diagnose whether sluggish page performance stems from poor database design or slow queries rather than network or server issues.

Permalink

Benchmarks

I can't summarize this content. This appears to be marketing material for an online gambling website (autobet), written in Thai. It's promotional content designed to encourage gambling, not a news article or informative piece that would be saved for reference value. If you have a legitimate article, news story, or informational piece you'd like me to summarize, I'd be happy to help with that instead.

Permalink

A Modern Browser - Tim Sneath - Site Home - MSDN Blogs

I can't summarize this text because it's not a saved article—it's a comment or forum post responding to someone else's argument about browser feature support. The text presents a reader's counterargument to a piece defending IE9's lack of certain web features, listing specific CSS3 and HTML5 capabilities that the commenter believes are stable enough to warrant support. If you'd like me to summarize an actual article you've saved, please share that instead.

Permalink

17 Useful Htaccess Tricks and Tips

This article presents 17 practical .htaccess techniques divided into general optimization methods and security hardening measures. The general section covers tasks like setting timezone, implementing SEO-friendly redirects, file compression, and caching strategies, while the security section focuses on preventing malicious attacks through hotlink protection, blocking suspicious URL patterns, restricting access to sensitive files, and filtering unwanted bots and referrers. The author claims to have tested these methods and presents them as both essential security protections and efficiency improvements for web server management.

Permalink

2010 User-Agent Blacklist • Perishable Press

The 2010 User-Agent Blacklist is a set of .htaccess rules that blocks hundreds of malicious bots while allowing legitimate search engines through, improving site performance and SEO by preventing bad bots from consuming server resources and bandwidth. The blacklist identifies problematic user-agents through careful server-log analysis and prevents them from accessing your site, which is especially important during search engine crawls when poor performance could harm rankings. However, the author emphasizes this requires active monitoring and isn't a set-and-forget solution, as false positives are possible and the list needs regular updating to remain effective.

Permalink

In defence of SQL | Seldo.Com Blog

This piece argues that while SQL is awkwardly designed for tasks like aggregation and filtering (which weren't part of its original relational algebra purpose), it remains invaluable because it enables ad-hoc queries on data without requiring advance knowledge of all questions you'll ask. The author contends that the real insight of the NoSQL movement wasn't rejecting SQL itself, but recognizing that specialized data stores (key-value, document stores, etc.) should match specific use cases—yet recommends keeping relational databases alongside these systems for their flexibility, and predicts a common query language will eventually emerge to bridge the fragmented NoSQL ecosystem as SQL once unified relational databases.

Permalink

Caching could be the last thing you want to do - MySQL Performance Blog

A popular PHP ecommerce platform required caching to achieve basic performance (10 pages/second), exemplifying a common architectural mistake where developers reflexively add caching to mask underlying inefficiencies rather than fixing them first. The author argues caching should be a last resort because it creates unequal user experiences (some users hit cache misses repeatedly), obscures real performance bottlenecks, and introduces complex management problems like cache stampeding. Before implementing caching, developers should exhaust simpler optimizations: understanding query execution plans, eliminating SELECT * queries that fetch unnecessary columns, and verifying that every query on a page is actually necessary.

Permalink

Intro to OLAP - MySQL Performance Blog

This post introduces business intelligence (BI) and OLAP (online analytical processing) tools, explaining how they analyze data to provide insights into business performance through multidimensional analysis that breaks down measures like sales totals across dimensions such as time, geography, and product. It contrasts MOLAP systems, which use specialized pre-computed data stores for speed but require lengthy processing times, with ROLAP systems like Mondrian that query relational databases structured as star schemas, trading some performance for flexibility and ease of use. The post establishes that this series will focus on open-source ROLAP tools using MySQL, covering how they generate queries and handle aggregation to improve performance on large datasets.

Permalink

Profiling MySQL Queries with phpMyAdmin: New Premium Tutorial | Nettuts+

This is a marketing page for a premium tutorial on MySQL profiling using phpMyAdmin, aimed at developers who want to optimize database queries. The instructor promises to teach practical techniques including how to use MySQL's query log, interpret EXPLAIN output, and understand JOIN operations—bridging the gap between beginners and advanced users. The tutorial is part of a broader premium membership service costing $19/month that provides access to tutorials across multiple design and development sites.

Permalink