我在做一个网页计数器时遇到了一点问题,想请教大家:
我设想我的计数器的大致需要是:除了统计每天访问次数外,还要统计客户端环境的一些信息,如:操作系统平台,使用的浏览器,屏幕分辨率大小,Referrer,等。
大多数计数器都是采用客户端 javascript 脚本的方式来嵌入计数器网页的,如:
<script language="javascript" src="counter.aspx?id=23"></script>
在 counter.aspx 中,我们则需要直接写入当前的数字;或者以拼图的方式将数字拆开,然后写入一串数字的图片。总而言之,这些都是服务端的事情了,比较简单了。
事实上,这样的情形中我们一般还需要将一些客户端信息,如:Referrer①,屏幕分辨率大小等以某种方式(一般是 QueryString)传回服务端,如下:
<script language="javascript">
var tmp = "<scri" + "pt language='javascript' src='counter.aspx?"
+ "id=23&referrer=" + document.referrer
+ "&screenwidth=" + screen.width + "'></scri" + "pt>";
document.write(tmp);
</script>
但我发现一个问题,我们无法记录到搜索引擎等所使用的 Crawler 的踪影,因为 Crawler 不会解析这样的脚本。然而,Crawler 对于我们来说太重要了,我不想舍弃对它们的跟踪。
那么另一种方案就是直接将计数器代码写入 Web Forms 中(或者间接地,做成 Control 再放入),这样在 Crawler 访问时,计数器肯定能够觉察到;但另一方面,我们无法统计客户端屏幕分辨率大小(这似乎是个小问题);还有,我们的计数器被 *.aspx 牢牢困住了,我们只能统计 *.aspx 页面了,连 *.htm 也无法统计了!
怎样才能兼顾二者呢?怎样才能既能察觉到 Crawler 的踪影,又能保证一定的灵活性呢?有谁可以给个思路呢?
注①:虽然在服务端用 Request.Referrer 可以返回一个 Referrer,但我们得到的是 counter.aspx 的 Referrer,也就是我们正在统计的目标页面。所以必须在我们统计的目标页面中用 document.referrer 取得。而在下面一种方案中,由于计数器直接包含在目标页面中,所以 Request.Referrer 就是我们要的。
打印 | 张贴于 2003-11-28 01:32:00 | Tag:暂无标签
留言反馈
关注统计方面的知识
我也得加强努力了.
要兼容两者,只有在动态页面中使用两者!html中无法获取spider。
我也做了一个统计小插件。或许可以交流一下:)
所以我只能说一说我遇到的两个问题的解决办法,或者正在这其中:
1、有时候无法使用上述第二段红色的代码获得document.referrer,很明显这是因为document.referrer中可能也包含“&”,所以我利用javascript在将它传递给服务器段之前进行URLCODE编码。
2、我们很需要获得URL中的搜索引擎关键词,但是像google这样的网站将关键词使用UTF-8编码,如果使用ASP中的REQUEST对象获取它,得到的很可能会是乱码,我的解决办法是先用javascript的decodeURIComponent函数将其解码,然后再传递给服务器端。
或者我说的都不是楼顶所要问的,但我只能这样了,我会尽快设法弄懂“Crawler”所指的究竟是什么。