Skip to content

Releases: ledgetech/ledge

v1.26.1

03 Oct 15:58
Compare
Choose a tag to compare

Hotfix release:

  • No longer cache 416 Range Not Satisfiable responses

v1.26

19 Sep 12:05
Compare
Choose a tag to compare
  • Feature: Rewrote ESI parser, now with full support for nested conditional (choose/when/otherwise) statements.
  • Feature: Added regular expression operator to ESI conditionals (=~).
  • Feature: PURGE requests now return JSON bodies.
  • Bugfix: Deal more gracefully with erroneous duplicate Expires headers #128
  • Documentation: General doc fixes and some better explanations around ESI and stale features.

v1.25

09 Jun 16:29
Compare
Choose a tag to compare
  • We now detect Redis errors on cache read and return 500 instead of considering it a MISS. If we're able to connect to Redis but have issues reading then this is most likely under a load / failure scenario, and so sending traffic upstream should be avoided.
  • Stale-revalidation jobs now use full_uri() for the jid for parity with purge-revalidation jobs.
  • Bugfix: Correctly reset Redis connection timeout after waiting on the collapsed forwarding channel.

v1.24

08 Jun 10:11
Compare
Choose a tag to compare

Important fix to avoid malicious response splitting. See: http://resources.infosecinstitute.com/http-response-splitting-attack/ for more information.

v1.23

27 May 12:00
Compare
Choose a tag to compare

Moved background jobs to separate queues, with a separate worker thread per Nginx worker process for each queue so that long running jobs don't consume all workers.

v1.22

26 May 15:42
Compare
Choose a tag to compare

New feature: Revalidate-on-purge

We now support an X-Purge request header on PURGE requests, which can specify "revalidate" or "delete". Delete hard deletes the item (instead of just expiring, which might be served stale still depending on your setup).

Revalidate will first expire the item, before scheduling a background job to revalidate. This only happens if the item previously existed.

In the case of a wildcard PURGE (i.e. PURGE by pattern) the PURGE itself is backgrounded (because the scan can take a while), and revalidation jobs are spawned for each item matching the pattern. Be careful what you wish for!

v1.21

25 Jan 15:31
Compare
Choose a tag to compare

ESI include recursion detection now bubbles up to parent requests, instead of being limited to one parent-child relationship. Previously, sub-requests could grow exponentially if a fragment had more than one recursive ESI include.

v1.20

21 Jan 10:35
Compare
Choose a tag to compare

Bugfix: If an ESI include fails hard (connection failure of 5xx), the parent page would be truncated. Thanks @hamishforbes

v1.19

05 Jan 13:19
Compare
Choose a tag to compare

Bugfix: When two requests race to delete a newly uncacheable response, the loser would fatal due to bad error logging code in v1.18.

v1.18

04 Jan 15:20
Compare
Choose a tag to compare
  • Bugfix: Parent headers for background requests were being treated case sensitively
  • Bugfix: Stale responses would always return 200, regardless of the actual response status
  • Bugfix: ESI processing was being skipped when serving stale
  • Optimisation: Revalidation qless jobs are now unique by URI