У меня много веб-сайтов, и я хочу получать аналитику от Google обо всех страницах, обслуживаемых кешем.
Можно ли добавить javascript или html в конец каждой страницы, обслуживаемой кешем?
For example swap </body> with <analytics code></body>
Ты можешь использовать mod_ext_filter
из apache:
ExtFilterDefine fixtext mode=output intype=text/html cmd="/bin/sed s/</body>/<analytics code></body>/"
<Location />
# core directive to cause the fixtext filter to
# be run on output
SetOutputFilter fixtext
</Location>
Для лака у вас есть ESI. Видеть: Боковая сторона включает Больше подробностей.
Короткий ответ: вы не можете. Varnish позволяет редактировать только исходящие заголовки, но не содержимое исходящего ответа. Это позволяет вам добавить код C в файл vcl, чтобы вы могли что-то взломать вместе, но он не предназначен для этого.
В противном случае я бы порекомендовал варианты Мирчи; либо с помощью ESI, либо с изменением apache или любого другого веб-сервера, который вы используете для внедрения кода.
На всякий случай, поскольку ваш вопрос не прояснил, вам не нужно заставлять Varnish добавить код мониторинга Analytics, чтобы отслеживать сайты, только этот код находится на странице. Весь код аналитики работает на стороне клиента, совершая звонки прямо из браузера посетителя.
Обязательно настройте лак, чтобы игнорировать файлы cookie аналитики - вашему внутреннему веб-серверу они не нужны, и их оставление убьет вашу посещаемость :)
Я написал VMOD для изменения тела ответа в лаке перед отправкой его клиенту. Используйте его на свой страх и риск https://github.com/aivarsk/libvmod-rewrite