在以下问题的可接受答案中,具有13K +代表的SO常规建议使用“ Web Bug”(不可缓存的1x1 img)来跟踪日志中的请求:
Google Analytics(分析)准确吗?
如何用Java做到这一点?
基本上,我有两个问题:
如何确保1x1图片不可缓存(如何设置标头)?
如何确保对这些1x1图像的查询将出现在日志中?
我正在寻找确切的代码段,因为我知道如何编写.jsp / servlet,并且知道如何提供1x1图片:)
我的问题确实是关于我应该编写的确切的.jsp / servlet以及如何/需要做些什么才能使Tomcat记录请求。
例如,我计划使用以下映射:
<servlet-mapping> <servlet-name>WebBugServlet</servlet-name> <url-pattern>/webbug*</url-pattern> </servlet-mapping>
然后使用引用“ webbug.png”(或.gif)的img标签,那么如何编写.jsp / servlet?
我应该在日志中查找什么/位置?
简单的方法是将日期时间戳添加到JSP中的图像。这将防止图像被缓存。
<% java.util.Date dt = new java.util.Date (); %> <img src="/invisible.jpg?<%=dt.getTime ()%>" width="1" height="1">
在访问日志中,您可以计算jpg-输出应为
127.0.0.1 - - [10/Jun/2010:11:38:53 +0530] "GET /mywebapp/jsp/invisible.jpg?1276150133362 HTTP/1.1" 200 991 127.0.0.1 - - [10/Jun/2010:11:38:54 +0530] "GET /mywebapp/jsp/invisible.jpg?1276150134659 HTTP/1.1" 200 991 127.0.0.1 - - [10/Jun/2010:11:38:55 +0530] "GET /mywebapp/jsp/invisible.jpg?1276150135627 HTTP/1.1" 200 991
用这种方法,您将不需要servlet映射。
替代方法将涉及编写Filter类来设置缓存控制标头。