Skip to content

Chrome finally ships Accept-Encoding: zstd — Please update example #70

Open
@jab4

Description

@jab4

Hi and late Happy Easter all!

As the title suggests, no issue in the buggy sense.

I ran some benchmarks against a 4 MB HTML file:

  # none......:  4,039,229 Bytes;  100 requests in   3.16 secs  (avg=0.0316 s per req)
  # gzip......:  1,290,963 Bytes;  100 requests in  17.65 secs  (avg=0.1765 s per req)
  # obgz......:  1,290,963 Bytes;  100 requests in  17.27 secs  (avg=0.1727 s per req)
  # zstd1.....:  1,392,549 Bytes;  100 requests in   4.01 secs  (avg=0.0401 s per req)
  # zstd2.....:  1,310,025 Bytes;  100 requests in   4.32 secs  (avg=0.0432 s per req)
  # zstd3.....:  1,240,800 Bytes;  100 requests in   4.45 secs  (avg=0.0445 s per req)
  # zstd4.....:  1,222,309 Bytes;  100 requests in   4.76 secs  (avg=0.0476 s per req)
  # zstd5.....:  1,195,749 Bytes;  100 requests in   5.84 secs  (avg=0.0584 s per req)
  # zstd6.....:  1,157,140 Bytes;  100 requests in   6.94 secs  (avg=0.0694 s per req)
  # zstd7.....:  1,133,898 Bytes;  100 requests in   8.18 secs  (avg=0.0818 s per req)
  # zstd8.....:  1,120,307 Bytes;  100 requests in   9.71 secs  (avg=0.0971 s per req)
  # zstd9.....:  1,115,600 Bytes;  100 requests in   9.80 secs  (avg=0.0980 s per req)
  # zstd10....:  1,095,873 Bytes;  100 requests in  12.33 secs  (avg=0.1233 s per req)
  # zstd11....:  1,082,522 Bytes;  100 requests in  18.20 secs  (avg=0.1820 s per req)
  # zstd12....:  1,081,317 Bytes;  100 requests in  21.91 secs  (avg=0.2191 s per req)
  # zstd13....:  1,059,720 Bytes;  100 requests in  52.40 secs  (avg=0.5240 s per req)
  # zstd14....:  1,044,099 Bytes;  100 requests in  67.91 secs  (avg=0.6791 s per req)
  # zstd15....:  1,036,078 Bytes;  100 requests in  87.37 secs  (avg=0.8737 s per req)
  # zstd16....:    983,006 Bytes;  100 requests in 103.78 secs  (avg=1.0378 s per req)
  # zstd17....:    980,923 Bytes;  100 requests in 115.09 secs  (avg=1.1509 s per req)
  # zstd18....:    972,316 Bytes;  100 requests in 141.62 secs  (avg=1.4162 s per req)
  # zstd19....:    971,972 Bytes;  100 requests in 145.05 secs  (avg=1.4505 s per req)
  # zstd20....:    971,972 Bytes;  100 requests in 146.45 secs  (avg=1.4645 s per req)
  # zstd21....:    971,972 Bytes;  100 requests in 148.13 secs  (avg=1.4813 s per req)
  # zstd22....:    971,962 Bytes;  100 requests in 152.34 secs  (avg=1.5234 s per req)

Kindly suggest updating your README's example section to include output buffering:

# Serve ZSTD compressed PHP pages to modern 2024 web browsers:
# Place this snippet *before* any of your HTML output begins.
if (false !== strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'zstd')) {
    header("Content-Encoding: zstd");
    ob_start(function(&$data) {
        return zstd_compress($data, 3); # level 3 is default, max. and slowest is 22
    });
} else {
    ob_start('ob_gzhandler'); # fallback for older browsers
}

Perhaps @remicollet could put some soft pressure on the PHP core team to bundle this extension? 🚀

Thanks!

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions