I've come across a few posts about Matrix Parameters recently and there is a lot of misunderstanding.
There are several old posts that discuss and describe these things:
- I've summarised what I think is important:
- urls with query params won't have their response cached by intermediaries/proxies (at present)
- matrix parameters may appear anywhere in path
- calculating the relative uri is different
- much more than uri convention
- query params are generally abused to add new verbs instead of using existing methods on resources
- matrix parameters are not resources, they are aspects that help reference a resource in an information space that is difficult to represent within a hierarchy
Tip: If you're not sure if you should use them then don't.
- Matrix parameters are used with
- Intermediaries (proxies) won't cache any url with a query parameter in the url
- this is because in the early days of the web, they didn't trust the Cache control information from dynamically generated pages.
- Freshness and Validation information are very important pieces of information and the proxy admins took a cautious stance and didn't cache any of it.
As the web has matured the views of devs/admins are changing, the new versions of Squid will default to cache any urls with query parameters
Obviously this could have a very large impact, I've heard google maps image tiles had this issue with some proxies at one time.
Relative URI calculations
Relative URIs have different affects, as relatives URLs are determined by appending to the Base URI. For Query Parameter requests they are stripped from the Base.
For those still interested I would recommend checking out the following in addition to the RFC-2616 of course.