Story #63815: Reduce communication between server and client
HTTP header status 200 should be 304 when cached page not modified
When a cached page is requested, a "Last-Modified" header is sent with the response, based on the SYS_LASTCHANGED field of the page.
The server response always has a "HTTP/1.1 200 OK" status
There is no check if the browser request comes with a "If-Modified-Since" header. If so, It should be compared with SYS_LASTCHANGED. If the date of SYS_LASTCHANGED is earlier or equal than "If-Modified-Since", it should return a "HTTP/1.1 304 Not Modified" status, instead of "HTTP/1.1 200 OK".
A "HTTP/1.1 304 Not Modified" status does not have to send the content of the page, which reduces traffic.
Updated by Sigfried Arnold almost 6 years ago
In principle, this is a good idea - but it is a bad idea to bind this at SYS_LASTCHANGED since this value does not necessarily contain the needed information
for example, if the page contains a plugin which generates a "random" output, you can't send 304 by comparing with SYS_LASTCHANGED - and TYPO3 simply does not know if an INT-cObject has not changed since the last request.
The only soltion for that would be a really careful cache configuration (by the Developer using the right cObject and the Editor, by defining those values in the cache control settings) - but this is also not trivial, since taking a page from the TYPO3 cache does not necessarily mean, it has not been modified.
Updated by Daniel Siepmann 10 months ago
There is also the ETag handling which is already generated and send by TYPO3, but not respected when receiving an ETag.
This also affects current master.