Comments (7)
@tmthrgd, do you have an opinion on this?
from gziphandler.
I’ve uploaded a PR with what I think are the best ideas y’all have presented: not changing the api, backwards compatible, ignoring white space and allowing mime-only comparison.
One thing I didn’t include was subtype catch-all comparisons, e.g. "text/*". Though some people might not differentiate between text/plain and text/html, I think some would. But more importantly this type of pattern leaves the comfort of the standard library’s parsing and has much higher likelihood of introducing bugs in our code and in clients'. I think MIME type is a happy medium between what we had before and ignore subtype, but if you disagree with this, I'm happy to change the PR. Also, I think the subtype thing is something we could add later without breaking what's in this new PR.
from gziphandler.
Could we perhaps make just 1 new option, func AcceptsGzip(func(*http.Request) bool) option
and then folks can do whatever they please within it?
from gziphandler.
I agree that we should have an Accepts option as @jprobinson suggests, but I suspect that the most common usage of that would be to implement MimeTypes([]string). So perhaps we should just add that option, too. In hindsight, that seems more useful than ContentTypes. Maybe deprecate that.
from gziphandler.
From what our wise friend @adammck says, I think the MimeTypes(types []string) option
would be worth bringing in but if you have the will to make all of the above, go for it.
from gziphandler.
I'd be in favour of this. 👍
In my fork this is how I chose to implement ContentTypes already. (See here and here).
It looks like the existing behaviour is somewhat broken anyway. text/html;charset=utf-8
won't match text/html; charset=utf-8
(note the space), yet they are semantically identical.
I also can't see a situation where anyone would depend on, say, compressing charset=utf-8
but not compressing charset=us-ascii
.
My one concern is the proliferation of exported symbols in this package (compare NYTimes/gziphandler with tmthrgd/gziphandler). Considering the documentation of ContentTypes
doesn't explicitly state it's behaviour, perhaps it would be acceptable to change ContentTypes
to strip the directives and whitespace before comparisions.
That's my 2c anyway.
from gziphandler.
Merged #69
Thanks!
from gziphandler.
Related Issues (20)
- Static files from ServeFile HOT 2
- Incorrect check for short write
- $maccon
- State of the package? HOT 1
- If not handleContenttype it buffers entire content
- make acceptsGzip public HOT 4
- Handling HEAD requests
- Do not set Content-Length on OPTIONS requests
- The NYTimes GitHub org will be renamed to nytimes HOT 4
- go mod depends on 1.12 HOT 11
- Range-Requests aren't properly handled
- Should Content-Length be set on gzipped responses? HOT 1
- Align Go package casing with VCS URL casing HOT 1
- Accept func(w http.ResponseWriter, r *http.Request) literals
- How to force flushing from the wrapped handler? HOT 4
- Show the error of gw.Close()
- Vary: Accept-encoding header is duplicated if inner handler sets it HOT 2
- Swappable gzip implementation? HOT 7
- "identity" Content-Encoding should also be compressed HOT 2
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gziphandler.