kettle11 / devserver

A simple HTTPS server for local development. Implemented in Rust.
zlib License
95 stars 15 forks source link

Ignore URL arguments when a file without the arguments exists. #18

Open berkes opened 3 years ago

berkes commented 3 years ago

Several 3rd party libs rely on arguments such as foo.css?hash=60abbfc70f76d949a785a65742f2a3628c9fe006 or materialdesignicons-webfont.ttf?v=5.8.55. Most often a trick to allow caching (by a CDN or fileserver), but refresh the cache when a new version is rolled out.

devserver then gives an error: Could not find file: /home/redacted/css/fonts/materialdesignicons-webfont.woff2?v=5.8.55

When I create that file, e.g. by adding as symlink, it gets served: afbeelding

While this "hack" works, it requires changes to the source-code that I'd rather not make.

Ideally, for me, this would work as follows:

When requesting /foo.html?bar=baz

This way, a static site that is stored from e.g. crawling/mirroring can be served, preserving url-arguments. But in many development-cases, we can ignore any url-arguments and serve the assets and files without the url-arguments.

Some edge-cases to ignore, or consider:

If this is considered a good feature, I'll try to make a PR that implements the simple version. And if an edge-case is considered crucial, I'll try to include that too.

kettle11 commented 3 years ago

Sounds good to me! Thanks for thinking this through!

As for the edge cases they could be ignored for now and revisited if they're actually causing a problem for someone.