The Future of American Housing

…is high-performance home building! Homes that are better for us, for our children and grandchildren, and our country. New home buyers want, even expect, a high-performance home. But just as with the word “quality”, the term “high-performance” has been used so many ways in home building that it has become vague and confusing. To provide clarity and a baseline, the National Association of Home Builders (NAHB) published their criteria for constructing a high-performance home around three benefits: comfort, wellness, and efficiency – the subject of this post. 

In looking at a new home, as home buyers, we tend to focus on individual decisions in isolation. A co-worker’s new home was insulated with expanding foam, they love it, and you want your new home built that way, too. Home builders on the other hand understand that a new home is a system, comprised of inter-related decisions. That super-insulated home will call for downsizing the home’s HVAC system and ductwork. Failing to do so would mean wasting money on larger HVAC system components which would cycle on and off quickly, thereby costing you more for utilities, too. And having larger ductwork is like trying to blow through a big, round tube vs. blowing through a straw. It won’t seem like much of the conditioned air is coming out of those oversized ducts.

Fortunately, many of the same decisions which contribute to your comfort and wellness are solutions to achieving an energy-efficient home with lower utility bills. Air sealing measures such as a housewrap, plus close attention to caulking voids and seams, reduce uncomfortable drafts and contribute to the effectiveness of your home’s insulation.

Infographic_Blog4

Building with Structurally Insulated Panel (SIPs), or Insulated Concrete Forms (ICFs) provides superior insulation and air-sealing, drastically reducing energy use. Choosing one of those advanced construction techniques can also affect the design. We’ll use Design Basics’ Cavanaugh plan to illustrate:

8540BL

Plan 8540BL as originally designed with 2x4” exterior walls – 1,699 sq. ft. (without optional 2nd floor expansion.)

8540BL_1

As originally designed, with 9’-high main level walls and 10’-high ceiling in MBR.

8540BL_2

Optional expansion/storage adds 165 sq. ft.

8540FOX

Plan 8540FOX adapted for 11.25” thick ICF exterior walls – 1,877 sq. ft. (without optional 2nd floor expansion.)

8540 ECO_1

The width and depth of the home grew because of the thicker ICF walls, some room sizes changed slightly.

8540 ECO_2

Note: due to their weight, ICFs are used for 2nd-floor walls only when they stack directly over main floor ICFs.

8540SUL

Plan 8540SUL adapted for SIP construction. Note SIP rooflines change slightly. Second-floor loft adds 201 sq. ft. for a total of 1,900.

8540SUL_1

The SIP roof means dramatic ceilings sloping upward from the back of the MBR, Family Room and eating area.

8540SUL_2

Sloping SIP rooflines create a loft overlooking the 1st-floor; BR3’s ceiling slopes up from the front; BR2 has a cathedral ceiling. Also, a play loft can be built above the bathroom and walk-in closet, accessed by a ladder from BR3.

8540SUL_OptPlayLoft

Tight, well-insulated homes can be heated and cooled with less expensive, smaller furnaces and air conditioners. Optimal efficiency and comfort can be achieved when you pair your HVAC equipment with a smart thermostat that “learns” your preferences, continually monitors indoor conditions and operates your system accordingly without your need to adjust it.

ENERGY STAR-rated lighting and appliances complete an energy-efficient home.  LED lighting prices and selection have become so attractive that choosing LED bulbs and fixtures a no-brainer. ENERGY STAR ratings for kitchen and laundry appliances make it easy to take energy consumption into account when selecting your new appliances.  As reported on energystar.gov, “Water heaters account for 12 percent of residential energy consumption.” Several ENERGY STAR-rated water heaters are available, and you can easily recoup the added cost in utility savings.

he question sometimes arises in conjunction with water heaters: which uses more water, tankless, or tank-type water heaters? If you’ve lived in a 2-story home with your water heater in the basement, you know how much water is wasted before hot water reaches your showerhead! But assuming the same location for your water heater – regardless of the type – there’s likely very little if any difference. You have the same amount of cool water to push out of the way before the hot water reaches your shower. This brings up another factor, the length of the water pipe runs. Notice that the Cavanaugh plan’s Owner’s Bathroom, laundry room, and half-bath are in close proximity, and the second-floor bathroom is above the laundry room?

Originally designed on a basement foundation, the Cavanaugh plan’s suggested water heater location is directly beneath the Owner’s Suite walk-in closet, keeping water pipe runs efficiently short.

8540 Basement Highlight

Choosing water-saving dishwashers and clothes washers can cut water consumption in half compared to older models. Further, the US EPA has a program identifying water-saving products for the home, WaterSense. Toilets, faucets, and showerheads bearing the WaterSense label have been certified to meet the EPA’s specifications for water efficiency.

As posted by the EPA, “Nationwide, landscape irrigation is estimated to account for nearly one-third of all residential water use.” And, as much as 50% of that water is wasted, due in large part to inefficient irrigation methods systems! WaterSense labeled products also include both weather-based and/or soil moisture-based sprinkler system controllers which can keep you from overwatering. Finally, selecting grass types and landscape plantings that need less water will further reduce the amount of water used.

Our previous post “It’s Raining In The Basement!” chronicled the woes of a catastrophic water leak in a brand-new home. Following remediation, the new home owners purchased a whole-house water leak detection system. Small wireless remote sensors were placed where leaks if any, would likely occur. Then, should a leak happen, the home’s water supply would automatically be shut off, stopping the leak.

As a nation, we can build better homes, and following the NAHB’s high-performance home guidelines is a fast track to “better”!

For more resources on thoughtful design and products:

Current Dir: /var/www/designbasics/wp-includes/

[DIR]  ID3 [ delete | rename ]
[DIR]  IXR [ delete | rename ]
[DIR]  PHPMailer [ delete | rename ]
[DIR]  Requests [ delete | rename ]
[DIR]  SimplePie [ delete | rename ]
[DIR]  Text [ delete | rename ]
[FILE] admin-bar.php [ edit | delete | rename ]
[DIR]  assets [ delete | rename ]
[FILE] atomlib.php [ edit | delete | rename ]
[FILE] author-template.php [ edit | delete | rename ]
[DIR]  block-bindings [ delete | rename ]
[FILE] block-bindings.php [ edit | delete | rename ]
[FILE] block-editor.php [ edit | delete | rename ]
[FILE] block-i18n.json [ edit | delete | rename ]
[DIR]  block-patterns [ delete | rename ]
[FILE] block-patterns.php [ edit | delete | rename ]
[DIR]  block-supports [ delete | rename ]
[FILE] block-template-utils.php [ edit | delete | rename ]
[FILE] block-template.php [ edit | delete | rename ]
[DIR]  blocks [ delete | rename ]
[FILE] blocks.php [ edit | delete | rename ]
[FILE] bookmark-template.php [ edit | delete | rename ]
[FILE] bookmark.php [ edit | delete | rename ]
[FILE] cache-compat.php [ edit | delete | rename ]
[FILE] cache.php [ edit | delete | rename ]
[FILE] canonical.php [ edit | delete | rename ]
[FILE] capabilities.php [ edit | delete | rename ]
[FILE] category-template.php [ edit | delete | rename ]
[FILE] category.php [ edit | delete | rename ]
[DIR]  certificates [ delete | rename ]
[FILE] class-IXR.php [ edit | delete | rename ]
[FILE] class-avif-info.php [ edit | delete | rename ]
[FILE] class-feed.php [ edit | delete | rename ]
[FILE] class-http.php [ edit | delete | rename ]
[FILE] class-json.php [ edit | delete | rename ]
[FILE] class-oembed.php [ edit | delete | rename ]
[FILE] class-phpass.php [ edit | delete | rename ]
[FILE] class-phpmailer.php [ edit | delete | rename ]
[FILE] class-pop3.php [ edit | delete | rename ]
[FILE] class-requests.php [ edit | delete | rename ]
[FILE] class-simplepie.php [ edit | delete | rename ]
[FILE] class-smtp.php [ edit | delete | rename ]
[FILE] class-snoopy.php [ edit | delete | rename ]
[FILE] class-walker-category-dropdown.php [ edit | delete | rename ]
[FILE] class-walker-category.php [ edit | delete | rename ]
[FILE] class-walker-comment.php [ edit | delete | rename ]
[FILE] class-walker-nav-menu.php [ edit | delete | rename ]
[FILE] class-walker-page-dropdown.php [ edit | delete | rename ]
[FILE] class-walker-page.php [ edit | delete | rename ]
[FILE] class-wp-admin-bar.php [ edit | delete | rename ]
[FILE] class-wp-ajax-response.php [ edit | delete | rename ]
[FILE] class-wp-application-passwords.php [ edit | delete | rename ]
[FILE] class-wp-block-bindings-registry.php [ edit | delete | rename ]
[FILE] class-wp-block-bindings-source.php [ edit | delete | rename ]
[FILE] class-wp-block-editor-context.php [ edit | delete | rename ]
[FILE] class-wp-block-list.php [ edit | delete | rename ]
[FILE] class-wp-block-parser-block.php [ edit | delete | rename ]
[FILE] class-wp-block-parser-frame.php [ edit | delete | rename ]
[FILE] class-wp-block-parser.php [ edit | delete | rename ]
[FILE] class-wp-block-pattern-categories-registry.php [ edit | delete | rename ]
[FILE] class-wp-block-patterns-registry.php [ edit | delete | rename ]
[FILE] class-wp-block-styles-registry.php [ edit | delete | rename ]
[FILE] class-wp-block-supports.php [ edit | delete | rename ]
[FILE] class-wp-block-template.php [ edit | delete | rename ]
[FILE] class-wp-block-type-registry.php [ edit | delete | rename ]
[FILE] class-wp-block-type.php [ edit | delete | rename ]
[FILE] class-wp-block.php [ edit | delete | rename ]
[FILE] class-wp-classic-to-block-menu-converter.php [ edit | delete | rename ]
[FILE] class-wp-comment-query.php [ edit | delete | rename ]
[FILE] class-wp-comment.php [ edit | delete | rename ]
[FILE] class-wp-customize-control.php [ edit | delete | rename ]
[FILE] class-wp-customize-manager.php [ edit | delete | rename ]
[FILE] class-wp-customize-nav-menus.php [ edit | delete | rename ]
[FILE] class-wp-customize-panel.php [ edit | delete | rename ]
[FILE] class-wp-customize-section.php [ edit | delete | rename ]
[FILE] class-wp-customize-setting.php [ edit | delete | rename ]
[FILE] class-wp-customize-widgets.php [ edit | delete | rename ]
[FILE] class-wp-date-query.php [ edit | delete | rename ]
[FILE] class-wp-dependencies.php [ edit | delete | rename ]
[FILE] class-wp-dependency.php [ edit | delete | rename ]
[FILE] class-wp-duotone.php [ edit | delete | rename ]
[FILE] class-wp-editor.php [ edit | delete | rename ]
[FILE] class-wp-embed.php [ edit | delete | rename ]
[FILE] class-wp-error.php [ edit | delete | rename ]
[FILE] class-wp-fatal-error-handler.php [ edit | delete | rename ]
[FILE] class-wp-feed-cache-transient.php [ edit | delete | rename ]
[FILE] class-wp-feed-cache.php [ edit | delete | rename ]
[FILE] class-wp-hook.php [ edit | delete | rename ]
[FILE] class-wp-http-cookie.php [ edit | delete | rename ]
[FILE] class-wp-http-curl.php [ edit | delete | rename ]
[FILE] class-wp-http-encoding.php [ edit | delete | rename ]
[FILE] class-wp-http-ixr-client.php [ edit | delete | rename ]
[FILE] class-wp-http-proxy.php [ edit | delete | rename ]
[FILE] class-wp-http-requests-hooks.php [ edit | delete | rename ]
[FILE] class-wp-http-requests-response.php [ edit | delete | rename ]
[FILE] class-wp-http-response.php [ edit | delete | rename ]
[FILE] class-wp-http-streams.php [ edit | delete | rename ]
[FILE] class-wp-http.php [ edit | delete | rename ]
[FILE] class-wp-image-editor-gd.php [ edit | delete | rename ]
[FILE] class-wp-image-editor-imagick.php [ edit | delete | rename ]
[FILE] class-wp-image-editor.php [ edit | delete | rename ]
[FILE] class-wp-list-util.php [ edit | delete | rename ]
[FILE] class-wp-locale-switcher.php [ edit | delete | rename ]
[FILE] class-wp-locale.php [ edit | delete | rename ]
[FILE] class-wp-matchesmapregex.php [ edit | delete | rename ]
[FILE] class-wp-meta-query.php [ edit | delete | rename ]
[FILE] class-wp-metadata-lazyloader.php [ edit | delete | rename ]
[FILE] class-wp-navigation-fallback.php [ edit | delete | rename ]
[FILE] class-wp-network-query.php [ edit | delete | rename ]
[FILE] class-wp-network.php [ edit | delete | rename ]
[FILE] class-wp-object-cache.php [ edit | delete | rename ]
[FILE] class-wp-oembed-controller.php [ edit | delete | rename ]
[FILE] class-wp-oembed.php [ edit | delete | rename ]
[FILE] class-wp-paused-extensions-storage.php [ edit | delete | rename ]
[FILE] class-wp-plugin-dependencies.php [ edit | delete | rename ]
[FILE] class-wp-post-type.php [ edit | delete | rename ]
[FILE] class-wp-post.php [ edit | delete | rename ]
[FILE] class-wp-query.php [ edit | delete | rename ]
[FILE] class-wp-recovery-mode-cookie-service.php [ edit | delete | rename ]
[FILE] class-wp-recovery-mode-email-service.php [ edit | delete | rename ]
[FILE] class-wp-recovery-mode-key-service.php [ edit | delete | rename ]
[FILE] class-wp-recovery-mode-link-service.php [ edit | delete | rename ]
[FILE] class-wp-recovery-mode.php [ edit | delete | rename ]
[FILE] class-wp-rewrite.php [ edit | delete | rename ]
[FILE] class-wp-role.php [ edit | delete | rename ]
[FILE] class-wp-roles.php [ edit | delete | rename ]
[FILE] class-wp-script-modules.php [ edit | delete | rename ]
[FILE] class-wp-scripts.php [ edit | delete | rename ]
[FILE] class-wp-session-tokens.php [ edit | delete | rename ]
[FILE] class-wp-simplepie-file.php [ edit | delete | rename ]
[FILE] class-wp-simplepie-sanitize-kses.php [ edit | delete | rename ]
[FILE] class-wp-site-query.php [ edit | delete | rename ]
[FILE] class-wp-site.php [ edit | delete | rename ]
[FILE] class-wp-styles.php [ edit | delete | rename ]
[FILE] class-wp-tax-query.php [ edit | delete | rename ]
[FILE] class-wp-taxonomy.php [ edit | delete | rename ]
[FILE] class-wp-term-query.php [ edit | delete | rename ]
[FILE] class-wp-term.php [ edit | delete | rename ]
[FILE] class-wp-text-diff-renderer-inline.php [ edit | delete | rename ]
[FILE] class-wp-text-diff-renderer-table.php [ edit | delete | rename ]
[FILE] class-wp-textdomain-registry.php [ edit | delete | rename ]
[FILE] class-wp-theme-json-data.php [ edit | delete | rename ]
[FILE] class-wp-theme-json-resolver.php [ edit | delete | rename ]
[FILE] class-wp-theme-json-schema.php [ edit | delete | rename ]
[FILE] class-wp-theme-json.php [ edit | delete | rename ]
[FILE] class-wp-theme.php [ edit | delete | rename ]
[FILE] class-wp-token-map.php [ edit | delete | rename ]
[FILE] class-wp-user-meta-session-tokens.php [ edit | delete | rename ]
[FILE] class-wp-user-query.php [ edit | delete | rename ]
[FILE] class-wp-user-request.php [ edit | delete | rename ]
[FILE] class-wp-user.php [ edit | delete | rename ]
[FILE] class-wp-walker.php [ edit | delete | rename ]
[FILE] class-wp-widget-factory.php [ edit | delete | rename ]
[FILE] class-wp-widget.php [ edit | delete | rename ]
[FILE] class-wp-xmlrpc-server.php [ edit | delete | rename ]
[FILE] class-wp.php [ edit | delete | rename ]
[FILE] class-wpdb.php [ edit | delete | rename ]
[FILE] class.wp-dependencies.php [ edit | delete | rename ]
[FILE] class.wp-scripts.php [ edit | delete | rename ]
[FILE] class.wp-styles.php [ edit | delete | rename ]
[FILE] comment-template.php [ edit | delete | rename ]
[FILE] comment.php [ edit | delete | rename ]
[FILE] compat.php [ edit | delete | rename ]
[FILE] cron.php [ edit | delete | rename ]
[DIR]  css [ delete | rename ]
[DIR]  customize [ delete | rename ]
[FILE] date.php [ edit | delete | rename ]
[FILE] default-constants.php [ edit | delete | rename ]
[FILE] default-filters.php [ edit | delete | rename ]
[FILE] default-widgets.php [ edit | delete | rename ]
[FILE] deprecated.php [ edit | delete | rename ]
[FILE] embed-template.php [ edit | delete | rename ]
[FILE] embed.php [ edit | delete | rename ]
[FILE] error-protection.php [ edit | delete | rename ]
[FILE] feed-atom-comments.php [ edit | delete | rename ]
[FILE] feed-atom.php [ edit | delete | rename ]
[FILE] feed-rdf.php [ edit | delete | rename ]
[FILE] feed-rss.php [ edit | delete | rename ]
[FILE] feed-rss2-comments.php [ edit | delete | rename ]
[FILE] feed-rss2.php [ edit | delete | rename ]
[FILE] feed.php [ edit | delete | rename ]
[DIR]  fonts [ delete | rename ]
[FILE] fonts.php [ edit | delete | rename ]
[FILE] formatting.php [ edit | delete | rename ]
[FILE] functions.php [ edit | delete | rename ]
[FILE] functions.wp-scripts.php [ edit | delete | rename ]
[FILE] functions.wp-styles.php [ edit | delete | rename ]
[FILE] general-template.php [ edit | delete | rename ]
[FILE] global-styles-and-settings.php [ edit | delete | rename ]
[DIR]  html-api [ delete | rename ]
[FILE] http.php [ edit | delete | rename ]
[FILE] https-detection.php [ edit | delete | rename ]
[FILE] https-migration.php [ edit | delete | rename ]
[DIR]  images [ delete | rename ]
[DIR]  interactivity-api [ delete | rename ]
[DIR]  js [ delete | rename ]
[FILE] kses.php [ edit | delete | rename ]
[DIR]  l10n [ delete | rename ]
[FILE] l10n.php [ edit | delete | rename ]
[FILE] link-template.php [ edit | delete | rename ]
[FILE] load.php [ edit | delete | rename ]
[FILE] locale.php [ edit | delete | rename ]
[FILE] media-template.php [ edit | delete | rename ]
[FILE] media.php [ edit | delete | rename ]
[FILE] meta.php [ edit | delete | rename ]
[FILE] ms-blogs.php [ edit | delete | rename ]
[FILE] ms-default-constants.php [ edit | delete | rename ]
[FILE] ms-default-filters.php [ edit | delete | rename ]
[FILE] ms-deprecated.php [ edit | delete | rename ]
[FILE] ms-files.php [ edit | delete | rename ]
[FILE] ms-functions.php [ edit | delete | rename ]
[FILE] ms-load.php [ edit | delete | rename ]
[FILE] ms-network.php [ edit | delete | rename ]
[FILE] ms-settings.php [ edit | delete | rename ]
[FILE] ms-site.php [ edit | delete | rename ]
[FILE] nav-menu-template.php [ edit | delete | rename ]
[FILE] nav-menu.php [ edit | delete | rename ]
[FILE] option.php [ edit | delete | rename ]
[DIR]  php-compat [ delete | rename ]
[FILE] pluggable-deprecated.php [ edit | delete | rename ]
[FILE] pluggable.php [ edit | delete | rename ]
[FILE] plugin.php [ edit | delete | rename ]
[DIR]  pomo [ delete | rename ]
[FILE] post-formats.php [ edit | delete | rename ]
[FILE] post-template.php [ edit | delete | rename ]
[FILE] post-thumbnail-template.php [ edit | delete | rename ]
[FILE] post.php [ edit | delete | rename ]
[FILE] query.php [ edit | delete | rename ]
[FILE] registration-functions.php [ edit | delete | rename ]
[FILE] registration.php [ edit | delete | rename ]
[DIR]  rest-api [ delete | rename ]
[FILE] rest-api.php [ edit | delete | rename ]
[FILE] revision.php [ edit | delete | rename ]
[FILE] rewrite.php [ edit | delete | rename ]
[FILE] robots-template.php [ edit | delete | rename ]
[FILE] rss-functions.php [ edit | delete | rename ]
[FILE] rss.php [ edit | delete | rename ]
[FILE] script-loader.php [ edit | delete | rename ]
[FILE] script-modules.php [ edit | delete | rename ]
[FILE] session.php [ edit | delete | rename ]
[FILE] shortcodes.php [ edit | delete | rename ]
[DIR]  sitemaps [ delete | rename ]
[FILE] sitemaps.php [ edit | delete | rename ]
[DIR]  sodium_compat [ delete | rename ]
[FILE] spl-autoload-compat.php [ edit | delete | rename ]
[DIR]  style-engine [ delete | rename ]
[FILE] style-engine.php [ edit | delete | rename ]
[FILE] taxonomy.php [ edit | delete | rename ]
[FILE] template-canvas.php [ edit | delete | rename ]
[FILE] template-loader.php [ edit | delete | rename ]
[FILE] template.php [ edit | delete | rename ]
[DIR]  theme-compat [ delete | rename ]
[FILE] theme-i18n.json [ edit | delete | rename ]
[FILE] theme-previews.php [ edit | delete | rename ]
[FILE] theme-templates.php [ edit | delete | rename ]
[FILE] theme.json [ edit | delete | rename ]
[FILE] theme.php [ edit | delete | rename ]
[FILE] update.php [ edit | delete | rename ]
[FILE] user.php [ edit | delete | rename ]
[FILE] vars.php [ edit | delete | rename ]
[FILE] version.php [ edit | delete | rename ]
[DIR]  widgets [ delete | rename ]
[FILE] widgets.php [ edit | delete | rename ]
[FILE] wp-db.php [ edit | delete | rename ]
[FILE] wp-diff.php [ edit | delete | rename ]

Viewing: /var/www/designbasics/wp-includes/class-wp-http-encoding.php

<?php
/**
 * HTTP API: WP_Http_Encoding class
 *
 * @package WordPress
 * @subpackage HTTP
 * @since 4.4.0
 */

/**
 * Core class used to implement deflate and gzip transfer encoding support for HTTP requests.
 *
 * Includes RFC 1950, RFC 1951, and RFC 1952.
 *
 * @since 2.8.0
 */
#[AllowDynamicProperties]
class WP_Http_Encoding {

	/**
	 * Compress raw string using the deflate format.
	 *
	 * Supports the RFC 1951 standard.
	 *
	 * @since 2.8.0
	 *
	 * @param string $raw      String to compress.
	 * @param int    $level    Optional. Compression level, 9 is highest. Default 9.
	 * @param string $supports Optional, not used. When implemented it will choose
	 *                         the right compression based on what the server supports.
	 * @return string|false Compressed string on success, false on failure.
	 */
	public static function compress( $raw, $level = 9, $supports = null ) {
		return gzdeflate( $raw, $level );
	}

	/**
	 * Decompression of deflated string.
	 *
	 * Will attempt to decompress using the RFC 1950 standard, and if that fails
	 * then the RFC 1951 standard deflate will be attempted. Finally, the RFC
	 * 1952 standard gzip decode will be attempted. If all fail, then the
	 * original compressed string will be returned.
	 *
	 * @since 2.8.0
	 *
	 * @param string $compressed String to decompress.
	 * @param int    $length     The optional length of the compressed data.
	 * @return string|false Decompressed string on success, false on failure.
	 */
	public static function decompress( $compressed, $length = null ) {

		if ( empty( $compressed ) ) {
			return $compressed;
		}

		$decompressed = @gzinflate( $compressed );
		if ( false !== $decompressed ) {
			return $decompressed;
		}

		$decompressed = self::compatible_gzinflate( $compressed );
		if ( false !== $decompressed ) {
			return $decompressed;
		}

		$decompressed = @gzuncompress( $compressed );
		if ( false !== $decompressed ) {
			return $decompressed;
		}

		if ( function_exists( 'gzdecode' ) ) {
			$decompressed = @gzdecode( $compressed );

			if ( false !== $decompressed ) {
				return $decompressed;
			}
		}

		return $compressed;
	}

	/**
	 * Decompression of deflated string while staying compatible with the majority of servers.
	 *
	 * Certain Servers will return deflated data with headers which PHP's gzinflate()
	 * function cannot handle out of the box. The following function has been created from
	 * various snippets on the gzinflate() PHP documentation.
	 *
	 * Warning: Magic numbers within. Due to the potential different formats that the compressed
	 * data may be returned in, some "magic offsets" are needed to ensure proper decompression
	 * takes place. For a simple pragmatic way to determine the magic offset in use, see:
	 * https://core.trac.wordpress.org/ticket/18273
	 *
	 * @since 2.8.1
	 *
	 * @link https://core.trac.wordpress.org/ticket/18273
	 * @link https://www.php.net/manual/en/function.gzinflate.php#70875
	 * @link https://www.php.net/manual/en/function.gzinflate.php#77336
	 *
	 * @param string $gz_data String to decompress.
	 * @return string|false Decompressed string on success, false on failure.
	 */
	public static function compatible_gzinflate( $gz_data ) {

		// Compressed data might contain a full header, if so strip it for gzinflate().
		if ( str_starts_with( $gz_data, "\x1f\x8b\x08" ) ) {
			$i   = 10;
			$flg = ord( substr( $gz_data, 3, 1 ) );
			if ( $flg > 0 ) {
				if ( $flg & 4 ) {
					list($xlen) = unpack( 'v', substr( $gz_data, $i, 2 ) );
					$i          = $i + 2 + $xlen;
				}
				if ( $flg & 8 ) {
					$i = strpos( $gz_data, "\0", $i ) + 1;
				}
				if ( $flg & 16 ) {
					$i = strpos( $gz_data, "\0", $i ) + 1;
				}
				if ( $flg & 2 ) {
					$i = $i + 2;
				}
			}
			$decompressed = @gzinflate( substr( $gz_data, $i, -8 ) );
			if ( false !== $decompressed ) {
				return $decompressed;
			}
		}

		// Compressed data from java.util.zip.Deflater amongst others.
		$decompressed = @gzinflate( substr( $gz_data, 2 ) );
		if ( false !== $decompressed ) {
			return $decompressed;
		}

		return false;
	}

	/**
	 * What encoding types to accept and their priority values.
	 *
	 * @since 2.8.0
	 *
	 * @param string $url
	 * @param array  $args
	 * @return string Types of encoding to accept.
	 */
	public static function accept_encoding( $url, $args ) {
		$type                = array();
		$compression_enabled = self::is_available();

		if ( ! $args['decompress'] ) { // Decompression specifically disabled.
			$compression_enabled = false;
		} elseif ( $args['stream'] ) { // Disable when streaming to file.
			$compression_enabled = false;
		} elseif ( isset( $args['limit_response_size'] ) ) { // If only partial content is being requested, we won't be able to decompress it.
			$compression_enabled = false;
		}

		if ( $compression_enabled ) {
			if ( function_exists( 'gzinflate' ) ) {
				$type[] = 'deflate;q=1.0';
			}

			if ( function_exists( 'gzuncompress' ) ) {
				$type[] = 'compress;q=0.5';
			}

			if ( function_exists( 'gzdecode' ) ) {
				$type[] = 'gzip;q=0.5';
			}
		}

		/**
		 * Filters the allowed encoding types.
		 *
		 * @since 3.6.0
		 *
		 * @param string[] $type Array of what encoding types to accept and their priority values.
		 * @param string   $url  URL of the HTTP request.
		 * @param array    $args HTTP request arguments.
		 */
		$type = apply_filters( 'wp_http_accept_encoding', $type, $url, $args );

		return implode( ', ', $type );
	}

	/**
	 * What encoding the content used when it was compressed to send in the headers.
	 *
	 * @since 2.8.0
	 *
	 * @return string Content-Encoding string to send in the header.
	 */
	public static function content_encoding() {
		return 'deflate';
	}

	/**
	 * Whether the content be decoded based on the headers.
	 *
	 * @since 2.8.0
	 *
	 * @param array|string $headers All of the available headers.
	 * @return bool
	 */
	public static function should_decode( $headers ) {
		if ( is_array( $headers ) ) {
			if ( array_key_exists( 'content-encoding', $headers ) && ! empty( $headers['content-encoding'] ) ) {
				return true;
			}
		} elseif ( is_string( $headers ) ) {
			return ( stripos( $headers, 'content-encoding:' ) !== false );
		}

		return false;
	}

	/**
	 * Whether decompression and compression are supported by the PHP version.
	 *
	 * Each function is tested instead of checking for the zlib extension, to
	 * ensure that the functions all exist in the PHP version and aren't
	 * disabled.
	 *
	 * @since 2.8.0
	 *
	 * @return bool
	 */
	public static function is_available() {
		return ( function_exists( 'gzuncompress' ) || function_exists( 'gzdeflate' ) || function_exists( 'gzinflate' ) );
	}
}

Upload File: