Polylang seems to set to every visitors the cookie
wordpress_polylang (value is language code).
This is bad practice for several reasons:
- this cookie is sent along every single http request the visitors browser make, adding for extra traffic
- this cookies burst caches in vain
I particular the latter point is a big issue. When any proxies or caches in the server end or in closer to the visitor tires to cache some of the files transferred over http, these cookies stop it from happening. Even though the cache and expire headers are OK, the mere presence of cookies makes proxies assume that the content varies from visitor to visitor who have different values in the cookies, thus nothing is actually cached.
Please consider alternative ways to do what you do. I think the best practice is to have unique urls for each language, like example.com/page, example.com/de/page, example.com/fr/page etc. I you want to automatically show the correct language to the user, you should do an auto-redirect to the correct url when the user opens the site for the first time (no referrer detected).
If the language relies on a cookie, how is for example Google supposed to index all language versions? Using good url would solve it too.