Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[HttpKernel] Add a "short" trace header format, make header configurable #30964

Merged
merged 1 commit into from Apr 7, 2019

Conversation

Projects
None yet
6 participants
@mpdude
Copy link
Contributor

commented Apr 7, 2019

Q A
Branch? master
Bug fix? no
New feature? yes
BC breaks? no
Deprecations? no
Tests pass? yes
Fixed tickets
License MIT
Doc PR symfony/symfony-docs#11340

This pull requests adds the first usage of array_key_first to the Symfony code base. Additionally, it makes it possible to configure the HttpCache to also add a "trace" header in production.

The HttpCache is a convenient, low-barrier yet performant way of accelerating the application. By having the "trace" information returned as a header in production as well, you can write it to server log files. For example, with Apache you can use %{X-Symfony-Cache}o in the LogFormat directive to log response headers.

With the information in the log files, you can easily process it from logfile processing/system metrics tools to find out about cache performance, efficiency and the URLs that might need extra cache tweaking.

Bildschirmfoto 2019-04-07 um 11 43 23

The "short" format will only output information for the main request to avoid leaking internal URLs for ESI subrequests. I also chose a concise format like stale/valid/store because that's much easier to parse out of logfiles (no whitespace, no need for quotes etc.).

If you're not comfortable with having Symfony in the header name that way, the header name can be changed through a configuration setting as well.

#FOSSHackathon

@mpdude

This comment has been minimized.

Copy link
Contributor Author

commented Apr 7, 2019

Fabbot complains about the (outdated?) license header only.

@fabpot

This comment has been minimized.

Copy link
Member

commented Apr 7, 2019

@mpdude You can ignore the header issue.

@stof
Copy link
Member

left a comment

Please add tests covering the new behavior.

@mpdude

This comment has been minimized.

Copy link
Contributor Author

commented Apr 7, 2019

Tests added.

@fabpot

fabpot approved these changes Apr 7, 2019

@nicolas-grekas nicolas-grekas added this to the next milestone Apr 7, 2019

@nicolas-grekas nicolas-grekas force-pushed the mpdude:http-cache-status-header branch from 5048184 to 9a2fcc9 Apr 7, 2019

@nicolas-grekas

This comment has been minimized.

Copy link
Member

commented Apr 7, 2019

Thank you @mpdude.

@nicolas-grekas nicolas-grekas merged commit 9a2fcc9 into symfony:master Apr 7, 2019

0 of 3 checks passed

fabbot.io Some changes should be done to comply with our standards.
Details
continuous-integration/appveyor/pr Waiting for AppVeyor build to complete
Details
continuous-integration/travis-ci/pr The Travis CI build is in progress
Details

nicolas-grekas added a commit that referenced this pull request Apr 7, 2019

feature #30964 [HttpKernel] Add a "short" trace header format, make h…
…eader configurable (mpdude)

This PR was squashed before being merged into the 4.3-dev branch (closes #30964).

Discussion
----------

[HttpKernel] Add a "short" trace header format, make header configurable

| Q             | A
| ------------- | ---
| Branch?       | master
| Bug fix?      | no
| New feature?  | yes
| BC breaks?    | no
| Deprecations? | no
| Tests pass?   | yes
| Fixed tickets |
| License       | MIT
| Doc PR        | symfony/symfony-docs#11340

This pull requests adds the first usage of `array_key_first` to the Symfony code base. Additionally, it makes it possible to configure the `HttpCache` to also add a "trace" header in production.

The `HttpCache` is a convenient, low-barrier yet performant way of accelerating the application. By having the "trace" information returned as a header in production as well, you can write it to server log files. For example, with Apache you can use `%{X-Symfony-Cache}o` in the `LogFormat` directive to log response headers.

With the information in the log files, you can easily process it from logfile processing/system metrics tools to find out about cache performance, efficiency and the URLs that might need extra cache tweaking.

<img width="1040" alt="Bildschirmfoto 2019-04-07 um 11 43 23" src="https://user-images.githubusercontent.com/1202333/55681763-6e90e980-592a-11e9-900f-e096350531c2.png">

The "short" format will only output information for the main request to avoid leaking internal URLs for ESI subrequests. I also chose a concise format like `stale/valid/store` because that's much easier to parse out of logfiles (no whitespace, no need for quotes etc.).

If you're not comfortable with having `Symfony` in the header name that way, the header name can be changed through a configuration setting as well.

#FOSSHackathon

Commits
-------

9a2fcc9 [HttpKernel] Add a \"short\" trace header format, make header configurable

@mpdude mpdude deleted the mpdude:http-cache-status-header branch Apr 7, 2019

wouterj added a commit to symfony/symfony-docs that referenced this pull request Apr 7, 2019

feature #11340 [HttpKernel] Document `trace_level` and `trace_header`…
… config options in `HttpCache` (mpdude)

This PR was squashed before being merged into the master branch (closes #11340).

Discussion
----------

[HttpKernel] Document `trace_level` and `trace_header` config options in `HttpCache`

Here's a small addition for symfony/symfony#30964.

#FOSSHackathon

Commits
-------

75febdc [HttpKernel] Document `trace_level` and `trace_header` config options in `HttpCache`

@nicolas-grekas nicolas-grekas modified the milestones: next, 4.3 Apr 30, 2019

@fabpot fabpot referenced this pull request May 9, 2019

Merged

Release v4.3.0-BETA1 #31435

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
You can’t perform that action at this time.