Comments (4)
Does the http spec say these headers can only appear once?
from colossus.
If I read the spec correctly, it does not say that certain headers can only appear once. In fact the content-type exampled showed two values (separated by comma).
There doesn't seem to be a preference between whether the same field should result in a comma separated listed or just repeated. Either way, it should behave the same. Currently headers is a list, but we could change it to a map of string to list, which would make look up quicker. Maybe we should do that for performance reasons?
from colossus.
Headers used to be a Map[String, Seq[String]]
, but maps (and basically all scala collections) are unfortunately very slow. I would advise not moving away from the Java List, as last time I benchmarked it was significantly faster than everything else.
I don't think I benchmarked lookup time, but honestly I wouldn't be surprised if scanning the list is still faster than a map lookup. Of course we're talking about an O(n) vs an O(1) operation, but I think you'd need to have a lot of headers for that to actually become significant. But don't take my word for it, definitely would be nice to get some documented numbers on it. Maybe a java HashMap would work.
from colossus.
I don't think there is any critical need to change this at the moment. At the very least it might make sense to wait for the new scala collections to come out. Once we get better at the habit of benchmarking we can look at this again. Closing for now.
from colossus.
Related Issues (20)
- Adding functionality to specify which IP address will be bind to when starting the server. HOT 1
- 100-continue is not supported HOT 2
- Document how to test metrics
- Inconsistency between redis and memcache interfaces HOT 2
- Logged error messages doesn't include the type of the errors (version 0.10) HOT 1
- Run scalafmt on colossus
- Colossus doesn't check existence of Host header HOT 4
- Benchmark latest colossus vs techempower version HOT 2
- maxResponseSize in Future Clients effectively limited to 10 MB by bytes Parser HOT 1
- Update of TechEmpower web framework benchmark for latest Colossus version HOT 7
- Http Header DateFormat Locale HOT 1
- Remove nscala-time HOT 1
- Update Load Balancer clients
- Obligatory example on page HOT 4
- Pull #672 request needs to be reviewed HOT 3
- Ask scala-steward to help you keeping library dependencies and sbt plugins up-to-date
- Inactivity HOT 3
- Release for 2.13.0 wanted HOT 1
- HttpServer can not work when the ActorSystem name contains underscore
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 colossus.