UpT*_*eek 12 javascript asp.net-mvc adsense iis-7.5
好的 - 我现在知道多页加载的来源!(然而,这个谜尚未解决).
似乎在向包含AdSense广告的网页发出请求后,Google会立即请求完全相同的网址(一次或多次)
例如,这就是日志的样子(注意来自Mediapartners-Google的请求):
2011-07-20 09:50:20 xxx.xxx.xxx.xxx GET /requestedURL/ 80 - xxx.xxx.xxx.xxx Mozilla/5.0+(Browserstring removed) 200 0 0 1140
2011-07-20 09:50:20 xxx.xxx.xxx.xxx GET /requestedURL/ 80 - 66.249.72.52 Mediapartners-Google 200 0 64 218
2011-07-20 09:50:22 xxx.xxx.xxx.xxx GET /requestedURL/ 80 - 66.249.72.52 Mediapartners-Google 200 0 0 171
Run Code Online (Sandbox Code Playgroud)
(我应该更多地关注IIS日志,而不是我自己的应用程序日志 - 我不会发现这些多个相同的同时请求可能来自不同的来源).这也解释了为什么在用WireShark分析请求时我找不到任何奇怪的东西,以及为什么fiddler没有表现出任何奇怪的东西.
所以赏金的问题现在变成了:
出于兴趣:
好的,我会事先为这个长度道歉!...
关于谷歌Adsense Javascript代码导致错误,这个问题适用于此问题.(形式)Unable to post message to googleads.g.doubleclick.net. Recipient has origin something.com
我不会复制那里的所有信息,但结论似乎是AdSense JS是错误的.(如果你有时间,请阅读背景问题).我已经知道这个问题已经有一段时间了,但我决定忍受JS错误,而不是从网站上拉AdSense.
但是,最近我注意到在我的ASP.NET MVC2应用程序中,Controller Actions似乎每次请求被调用两次(有时甚至是3次). 奇怪的是,它只发生在生产服务器上. 经过一番思考后,我重新认识到Dev和Production环境之间的一个区别是AdSense javscript只在生产中有效.
为了测试这一点,我从其中一个生产页面中删除了所有的adsense代码,并且看到,多页面加载问题就消失了!
我想也许是因为页面上存在导致问题的一般JS错误,所以为了测试这个我在我自己的JS代码中引入了一些简单的错误,但是这并没有导致多页加载问题重新出现.
每个请求可以多次调用页面的一种已知情况是,存在具有空src属性的图像标记,或具有空src属性的外部资源引用.至关重要的是,AdSense JS Bug问题最受欢迎的答案指出:
"此调用中的targetOrigin参数,this.la设置为 http://googleads.g.doubleclick.net.但是,新的iframe是在src设置为about:blank的情况下编写的."
这似乎与空洞的 [编辑:这是一个红鲱鱼]src问题非常相似...... 这似乎太过于共同发生,而且目前我认为这就是问题所在.
但是,我不知道我们要离开这里. 这些多个动作调用引起了实际问题(我不得不使用代码阻止,序列化事务和各种讨厌的黑客来限制不利影响).当然,我可以完全找错了树-我很困惑,我无法找到任何相关的参考资料,给出的AdSense的普及,以及问题的性质(但随后又在AdSense的结论JS Bug问题也令人惊讶).我希望这对我来说是一个愚蠢的错误,所以我需要进行健全性检查.
我想问一下社区:
致Sumarise: - 我的行动每页请求执行2次(有时3次).
src="about:blank"在iFrame上设置了一个src="about:blank"AdSense代码中最容易出现问题.只是为了记录我已经排除的事情:
src=""/ src="#"),或者我的代码中的html中没有其他外部资源url('') )中没有空的url引用 注意:对于任何想要复制它的人,应该注意到,奇怪的是,当多个动作调用发生时,Fiddler只显示一个请求被发送到服务器.我不知道为什么这应该是这样,但服务器日志不在:)也许有人通过空SRC时引起谁拥有这个问题以前的经验中的img标签属性可以说他们是否已经看到提琴手相同的行为.
HTML(@Ivan)
以下是我如何实施Adsense(删除了ID)
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl" %>
<div class="ad">
<%if (!HttpContext.Current.IsDebuggingEnabled) { %>
<script type="text/javascript"><!--
google_ad_client = "ca-pub-xxxxxxxxxxxxxxx";
/* xxxxxxxxxxxxxxx */
google_ad_slot = "xxxxxxxxx";
google_ad_width = 728;
google_ad_height = 15;
//-->
</script>
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js">
</script>
<%} else { %>
<img src="/Content/images/googleAdMock728x15_4_e.gif" width="728" height="15" />
<%} %>
</div>
Run Code Online (Sandbox Code Playgroud)
这是由View中的RenderPartial插入的:
<% Html.RenderPartial("AdSense_XXXXXX"); %>
Run Code Online (Sandbox Code Playgroud)
TCP记录(@Tomas)
到目前为止,我已经做了一个wireshark捕获:
我真的看不出两者之间的显着差异(虽然我的网络技能不是很好).需要注意的一点是,他们都似乎有一个TCP retransmittion初始请求后立即HTTP请求的-我不知道那的意义.我可以确认,虽然在案例1中服务器日志报告了2次执行,而在案例2中只有一次执行.
接下来,我将在两种情况下尝试在服务器端进行TCP日志记录,并在此处发布结果.
鉴于您观察到的行为似乎难以避免,我们是否可以专注于解决方法?
能否根据UserAgent区分请求,从而过滤掉请求。这对你来说是一个可行的方法吗?如果是这样,那么您可能可以基于这种方法:http://blog.flipbit.co.uk/2009/07/writing-iphone-sites-with-aspnet-mvc.html 这里他们检测iPhone,但概念是Mediapartners-Google 机器人也是如此。
| 归档时间: |
|
| 查看次数: |
3029 次 |
| 最近记录: |