Skip to content

Investigate moving to a new web framework #269

@shepmaster

Description

@shepmaster

Iron is no longer actively maintained. Now is when we can see if our architecture separation pays off or not...

How can I help?

In order of difficulty from easy to hard...

  • 👍 or 👎 a comment for a framework that you like or dislike for any reason.
  • Let us know of a web framework that's worth investigating that we don't have listed.
  • Add a comment if you research one or more of the requirements for a framework.
  • Attempt porting the playground to a framework and push up a branch.

What are you looking at?

Requirements

  • Caching
    • Aggressive caching
    • Fine-grained caching (index.html vs assets)
  • Static file serving
    • Modification time checking
    • No path traversal
    • Side-by-side pre-compressed files
    • Automatic content-type assignment
  • Redirection of HTTP to HTTPS (optional)
  • Basic off-request access logging (url, ip, status, start, duration)
  • Routing
    • With path variables
  • URL rewriting
  • CORS
  • JSON body parsing / response

Caching

The playground serves up index.html and a few other similar files that never change name. These should ideally use something like ETags with a short-ish expiry. We currently use a 1 hour expiry, but not ETags.

The assets are all in a path called /assets. These all have a digest hash appended to them, so they can be cached "forever". In practice, this is 1 year.

There's a few other pieces of information that could use caching (e.g. the playground crates, channel versions) but these are all generated data and so we could pre-compute an ETags identifier to check against.

Access statistics

  • Roughly 2 requests per second

Metadata

Metadata

Assignees

No one assigned

    Labels

    maintenanceKeeping the wheels turning

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions