1.20 - 2019-06-30
- Use valid value for script
typeto quiet W3C validator.
1.19 - 2019-06-13
- Add *.typekit.net, stackpath.bootstrapcdn.com to CSS whitelist.
- Don't apply rot13 on url-encoded characters.
1.18 - 2019-03-04
- Don't rewrite page-relative fragment image URLs like
1.17 - 2019-01-31
scriptattributes in sorted order (that is,
type) to stop Internet Explorer from running scripts twice when they have
1.16 - 2019-01-08
- Encode bundler request query to avoid triggering adblockers.
- Use a promise to delay bundler requests until the end of the event loop, rather than setTimeout.
1.15 - 2019-01-03
- Scripts can now be loaded via
document.write. This restores normal browser behaviour.
1.14 - 2019-01-03
document.writenow immediately inserts the HTML into the page. This fixes compatibility with Google AdSense.
1.13.1 - 2018-12-09
- Remove query strings from the URLs passed to the JS, CSS bundler.
1.13.0 - 2018-12-09
- Remove query strings from URLs to stylesheets and scripts loaded from the local server. It is redundant, since we add the modification time to the URL ourselves.
1.12.2 - 2018-10-16
- Increase timeouts for API connection.
1.12.1 - 2018-10-15
- Don't use IndexedDB-backed cache on Safari.
1.12.0 - 2018-10-15
picture > sourcetags.
1.11.0 - 2018-10-09
- Proxy CSS for maxcdn.bootstrapcdn.com, idangero.us, *.github.io.
- Proxy icon fonts and other resources from fonts.googleapis.com.
- Improve log messages from image filter.
- Do not proxy maps.googleapis.com, to fix NotLoadingAPIFromGoogleMapError.
1.10.0 - 2018-09-24
- Moved image processing filters to API.
1.9.6 - 2018-09-13
srcattribute from scripts that are loaded through the bundler, so that old versions of Firefox do not make extraneous downloads.
1.9.5 - 2018-09-13
- Check that the bundler returns the right amount of responses.
- Per-script debugging message when executing scripts.
1.9.4 - 2018-09-13
- Animated GIFs are no longer processed, so that animation is preserved.
1.9.3 - 2018-08-07
<!--comments in inline scripts are removed only at the beginning.
1.9.2 - 2018-07-27
- Empty scripts are cached correctly.
1.9.1 - 2018-07-27
- Async scripts are now not loaded before sync scripts that occur earlier in the document.
1.9.0 - 2018-07-26
- Scripts are now retrieved in a single request.
- Non-existent filter classes are ignored, and an error is logged.
- A 'dummy filename' such as
__p__.jsis appended to service requests to trick Cloudflare into caching those responses.
- The maximum document size for filters to be applied was corrected to be 1 MiB, not 1 GiB
1.8.0 - 2018-07-11
- Bundle URLs are now much shorter, allowing more resources per request.
@font-faceelements for immediate text rendering.
- Changed cache size threshold from 100 GiB to 500 MiB.
1.7.0 - 2018-07-04
- Support for
retrieverMappath prefixes are now regexes.
- Bundle the
Requestslibrary and Mozilla CA certificates and use them as default HTTP client engine.
1.6.0 - 2018-06-27
- A configuration variable for toggling HTML document detection before applying filters.
- Unify the filter application logic when doing output buffering and on-demand application.
1.5.6 - 2018-06-25
- Reverted REQUEST_URI parsing to determine PATH_INFO.
- Process HTML where one or more comments occur before the doctype declaration.
1.5.5 - 2018-06-18
Phast will now fallback to using REQUEST_URI if DOCUMENT_URI is not available.Reverted in 1.5.6. Phast will now use full DOCUMENT_URI or REQUEST_URI if PHP_SELF is not part of them.Reverted in 1.5.6.
1.5.4 - 2018-06-14
- An empty response from the image optimization API is now considered an error.
1.5.3 - 2018-06-11
- Phast now sends the
Expiresheader, in addition to
Cache-Control, so that mod_expires doesn't add its own.
- Phast now correctly locates resources on setups where DOCUMENT_ROOT is wrong, but SCRIPT_NAME and SCRIPT_FILENAME are congruent.
1.5.2 - 2018-05-29
- Inline scripts that begin with
<!--now work on IE.
1.5.1 - 2018-05-23
Content-Encoding: identityheader is no longer sent.
- The bundler request is now flushed before it gets larger than 4.5K or so.
1.5.0 - 2018-05-11
- Only optimized versions of images are now inlined.
- We do not rely on
finfofor determining file types anymore.
- Non-cached non-local styles won't cause a flicker on first load anymore.
1.4.0 - 2018-05-03
- Support for the Requests library that is bundled by WordPress.
- The bundler service does now not fail entirely when cURL is missing and remote resources are requested.
1.3.2 - 2018-05-03
- Phast is no longer dependent on the ctype extension.
- A regression on IE 11 due to a missing
Promiseimplementation was fixed.
- URL parsing no longer fails on malformed URLs. (For PhastPress.)
1.3.1 - 2018-04-27
- Phast now works when Fileinfo extension is not installed.
1.3.0 - 2018-04-18
- Attributes with JSON values are now quoted with single quotes for better readability.
- Phast now works on Windows.
1.2.0 - 2018-04-13
PhastDocumentFilters::apply()method for integration in view rendering.
- Removal of
Content-Lengthheader when filters are applied.
- Inlined CSS from
- Cross-domain requests to the service are allowed. (
- Cache control and other default headers for CSS bundler service.
- Processing of multiple images in one CSS rule. (
background: url(...), url(...))
- Proxy Google Maps API JS, DoubleClick stats JS
- Path format queries are now serialized the same way as normal queries (via
falsedifferently, breaking token verification.
- An error was thrown during image processing when pngquant or jpegtran were missing. This was fixed.
1.1.0 - 2018-04-12
- Inlining of small images in HTML, CSS.
- CSS request bundling.
- First byte time optimization.
- X-Accel-Expires header.
- HTML processing using a regex-based tokenizer, rather than DOMDocument.
- Cache garbage collection is improved and sets a hard limit on the cache size.
- IFrame lazy loading compatibility with already existing implementations.