Server Fault is a question and answer site for system and network administrators. It's 100% free, no registration required.

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

Google Analytics use some query parameters to identify campaigns and to do cookie control. This is all handled by javascript code. Take a look at the following example: m=October%2B2008&utm_campaign=promotion

This will set cookies via JavaScript with the right campaign origin. This query parameters can have multiple and sometimes random values. Since they are used as cache hash keys the cache performance is heavily degraded in some scenarios.

I suppose there's a not so hard configuration on cache servers to just ignore all query parameters or specific query parameters. Am I right?

Does anyone know how hard is it in popular web cache solutions, to create ?

I'm not interested in a specific web cache solution. It would be great to hear about the one you use.

share|improve this question

Fiddling with the cache is not the right way to go about this.

The "right" way to handle URLs with this sort of tracking is to send a 301 redirect to your canonical URL (after actually doing any necessary tracking, of course).

share|improve this answer

Not sure I entirely follow you, but:

With squid I believe you would create a url regex ACL and then use the cache directive to tell it not to cache those requests.

share|improve this answer

In varnish, in the vcl_recv function

set req.url = regsub(req.url, "\?.*", "");

You would really need to evaluate whether you wanted to do that though. If it is served from Varnish rather than your backend, are you altering any of your stat collection processes?

share|improve this answer
Just removing all utm_ parameters -- [?&]utm_[a-z]*=[^&]* (or something similar) -- might be better than removing all of them. Having and cached as the same entity can cause headache. – grawity Sep 11 '10 at 15:20

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.