Strong validation consists of guaranteeing that the resource is, byte to byte, identical to the one it is compared to.
Weak validation considers two versions of the document as identical if the content is equivalent. For example, a page that would differ from another only by a different date in its footer, would be considered identical to the other with weak validation.
Vary HTTP response header describes the parts of the request message aside from the method and URL that influenced the content of the response it occurs in
Vary: *
Vary: <header-name>, <header-name>, ...
Vary: Accept-Encoding
Normalization: Caching servers will by default match future requests only to requests with exactly the same headers and header values. To avoid unnecessary requests and duplicated cache entries, caching servers should use normalization to pre-process the request and cache only files that are needed.
Avoid using MySQL query cache (for version < 5.7.20):
Enabling the query cache adds some overhead for both reads and writes: (From High Performance MySQL v3):
Read queries must check the cache before beginning.
If the query is cacheable and isn’t in the cache yet, there’s some overhead due to storing the result after generating it.
There’s overhead for write queries, which must invalidate the cache entries for queries that use tables they change. Invalidation can be very costly if the cache is fragmented and/or large (has many cached queries, or is configured to use a large amount of memory).