<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" media="screen" href="/~d/styles/rss2full.xsl"?><?xml-stylesheet type="text/css" media="screen" href="http://feeds.feedburner.com/~d/styles/itemcontent.css"?><rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:sy="http://purl.org/rss/1.0/modules/syndication/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/" xmlns:feedburner="http://rssnamespace.org/feedburner/ext/1.0" version="2.0">

<channel>
	<title>OpenX中文研究</title>
	
	<link>http://openxchina.org</link>
	<description>研究OpenX中文环境的应用，以及基于OpenX在中国环境下的业务模式应用</description>
	<lastBuildDate>Sun, 07 Mar 2010 09:25:31 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="self" type="application/rss+xml" href="http://feeds.feedburner.com/openxchina" /><feedburner:info uri="openxchina" /><atom10:link xmlns:atom10="http://www.w3.org/2005/Atom" rel="hub" href="http://pubsubhubbub.appspot.com/" /><item>
		<title>广告投放问题剖析</title>
		<link>http://feedproxy.google.com/~r/openxchina/~3/iBmA7ccjjuI/405</link>
		<comments>http://openxchina.org/archives/405#comments</comments>
		<pubDate>Sun, 07 Mar 2010 09:19:24 +0000</pubDate>
		<dc:creator>pinson</dc:creator>
				<category><![CDATA[应用技巧]]></category>
		<category><![CDATA[Delivery]]></category>
		<category><![CDATA[剖析]]></category>
		<category><![CDATA[定位问题]]></category>
		<category><![CDATA[投放]]></category>
		<category><![CDATA[问题]]></category>

		<guid isPermaLink="false">http://openxchina.org/?p=405</guid>
		<description><![CDATA[本文英文原文地址：http://www.openxtips.com/2009/06/tip-14-troubleshooting-banner-delivery/
对于新的OpenX用户来说，对于广告投放出现的各种问题会很头大。即使是对于有经验的OpenX用户，也时不时会在广告投放上遇到一些困难。
您也知道，OpenX广告没有投放出来的原因有很多，很难有一个简单的方案能解决这个问题。幸运的是确认问题在哪的过程不是太难，下面我们一起来看下如何找到广告投放问题的Check List：
#1.0: 是否有广告在投放？
OpenX服务器是否可以投放广告（即使这些广告不是您想要的），或者说完全没有广告在投放？如果有广告可以投放，前往#2.0，如果确认没有广告在投放，前往#1.1。
#1.1: 您正在使用的是直接选择么？
如果您正尝试使用OpenX的直接选择方式投放广告，而非使用广告代码，那么请先尝试通过广告位投放广告。直接选择投放方式是一个非常复杂的过程，主要是针对OpenX的高级用户。如果您的广告不能正常投放，有可能只是因为您还不是一个高级的用户。所以，请先尝试使用广告代码进行投放。
#1.2: 您试过重新生成广告代码么？
有时候，广告不能投放的原因是一个简单的复制粘贴错误。尝试重新生成广告代码，并且复制粘贴到您的网站，看看有没有用。
如果还是不行，尝试将广告代码放到一个简单的无内容HTML页面。有可能是您页面的内容和广告代码之间有冲突。将广告代码放到一个简单的HTML页面可以保证不是页面内容与代码冲突的问题。
#1.3: 您尝试过使用别的广告代码么？
有可能是您选择的广告代码本身有问题，或者只是因为您所选择的广告代码不适合投放对应的广告类型，举个例子来说，图片广告代码只能显示图片广告，而HTML广告是不能在此类图片广告代码上线时的。
尝试别的广告代码类型，看看是不是有用。一般来说，Javascript代码适用于任何广告类型。
#1.4: 您确认广告位上有对应展示概率高于0%的有效广告么？
检查广告位显示概率界面，确认广告位有对应展示概率高于0%的有效广告。如果没有这种广告，您需要链接一些有效广告到广告位上，就可以看到广告了。
另外，如果您使用广告位链来投放另外一个广告位上的广告，尝试重新生成另外的广告位的广告代码并直接使用，看看是否有用。可能您的广告位链并没有设置好。
#1.5: 确认广告位上有可用的广告投放么？
根据实际经验，广告位上不显示广告，实际上是由于广告已经投放完了。举例来说，广告位上连接的所有广告都设置了一天显示一次，然后所有的广告都被显示过，于是乎对应的广告位就没有广告可以显示了。
由于有很多可能的投放限制或者频次限制导致广告无法显示，确认在广告位上有对应至少一个肯定可以投放的广告，来确认这个广告是否可以显示，而其他广告都不行。
#1.6: 您运行了广告屏蔽工具么？
广告屏蔽工具（类似Adblock Plus）会阻止广告展现。如果您正在运行此类工具，尝试禁止功能看看是不是可以看到广告。
#1.7: 确认广告代码服务器调用问题
如果上面所有步骤都试过后都没有用，那很有可能是广告代码在服务器调用的时候出了问题。为了找到问题在哪，您需要一步步的查看服务器调用过程。
举一个简单的例子，用一个简单的HTML页面，页面里没有任何内容，只有一个简单的OpenX Javascript代码，运行这个页面：假设OpenX服务器运行在&#8221;www.example.com&#8221;域名下。

&#60;html&#62;
&#60;head&#62;
  &#60;title&#62;Text OpenX Page&#60;/title&#62;
&#60;/head&#62;
&#60;body&#62;

&#60;!--/* OpenX Javascript Tag v2.8.0 */--&#62;
&#60;script type='text/javascript'&#62;&#60;!--//&#60;![CDATA[
  var m3_u = (location.protocol=='https:'?'https://www.example.com/openx/www/delivery/ajs.php':'http://www.example.com/openx/www/delivery/ajs.php');
  var m3_r = Math.floor(Math.random()*99999999999);
  if (!document.MAX_used) document.MAX_used = ',';
  document.write ("&#60;scr"+"ipt type='text/javascript' src='"+m3_u);
  document.write ("?zoneid=1");
  document.write ('&#38;amp;cb=' + m3_r);
  if (document.MAX_used != [...]]]></description>
			<content:encoded><![CDATA[<p>本文英文原文地址：<a href="http://www.openxtips.com/2009/06/tip-14-troubleshooting-banner-delivery/" target="_blank">http://www.openxtips.com/2009/06/tip-14-troubleshooting-banner-delivery/</a></p>
<p>对于新的OpenX用户来说，对于广告投放出现的各种问题会很头大。即使是对于有经验的OpenX用户，也时不时会在广告投放上遇到一些困难。</p>
<p>您也知道，OpenX广告没有投放出来的原因有很多，很难有一个简单的方案能解决这个问题。幸运的是确认问题在哪的过程不是太难，下面我们一起来看下如何找到广告投放问题的Check List：</p>
<h3>#1.0: 是否有广告在投放？</h3>
<p>OpenX服务器是否可以投放广告（即使这些广告不是您想要的），或者说完全没有广告在投放？如果有广告可以投放，前往<a href="#2.0">#2.0</a>，如果确认没有广告在投放，前往#1.1。</p>
<h4>#1.1: 您正在使用的是直接选择么？</h4>
<p>如果您正尝试使用OpenX的<a href="http://www.openx.org/en/support/direct-selection">直接选择</a>方式投放广告，而非使用<a href="http://www.openx.org/en/docs/2.8/userguide/zone+invocation">广告代码</a>，那么请先尝试通过广告位投放广告。直接选择投放方式是一个非常复杂的过程，主要是针对OpenX的高级用户。如果您的广告不能正常投放，有可能只是因为您还不是一个高级的用户。所以，请先尝试使用广告代码进行投放。</p>
<h4>#1.2: 您试过重新生成广告代码么？</h4>
<p>有时候，广告不能投放的原因是一个简单的复制粘贴错误。尝试重新生成广告代码，并且复制粘贴到您的网站，看看有没有用。</p>
<p>如果还是不行，尝试将广告代码放到一个简单的无内容HTML页面。有可能是您页面的内容和广告代码之间有冲突。将广告代码放到一个简单的HTML页面可以保证不是页面内容与代码冲突的问题。</p>
<h4>#1.3: 您尝试过使用别的广告代码么？</h4>
<p>有可能是您选择的广告代码本身有问题，或者只是因为您所选择的广告代码不适合投放对应的广告类型，举个例子来说，图片广告代码只能显示图片广告，而HTML广告是不能在此类图片广告代码上线时的。</p>
<p>尝试别的广告代码类型，看看是不是有用。一般来说，Javascript代码适用于任何广告类型。</p>
<h4>#1.4: 您确认广告位上有对应展示概率高于0%的有效广告么？</h4>
<p>检查<a href="http://www.openxtips.com/2009/05/tip-11-use-the-zone-probability-screen/">广告位显示概率界面</a>，确认广告位有对应展示概率高于0%的有效广告。如果没有这种广告，您需要链接一些有效广告到广告位上，就可以看到广告了。</p>
<p>另外，如果您使用广告位链来投放另外一个广告位上的广告，尝试重新生成另外的广告位的广告代码并直接使用，看看是否有用。可能您的广告位链并没有设置好。</p>
<h4>#1.5: 确认广告位上有可用的广告投放么？</h4>
<p>根据实际经验，广告位上不显示广告，实际上是由于广告已经投放完了。举例来说，广告位上连接的所有广告都设置了一天显示一次，然后所有的广告都被显示过，于是乎对应的广告位就没有广告可以显示了。</p>
<p>由于有很多可能的投放限制或者频次限制导致广告无法显示，确认在广告位上有对应至少<a href="http://www.openxtips.com/2009/05/tip-10-always-have-a-guaranteed-delivery-remnant-banner/">一个肯定可以投放的广告</a>，来确认这个广告是否可以显示，而其他广告都不行。</p>
<h4>#1.6: 您运行了广告屏蔽工具么？</h4>
<p>广告屏蔽工具（类似<a href="http://adblockplus.org/">Adblock Plus</a>）会阻止广告展现。如果您正在运行此类工具，尝试禁止功能看看是不是可以看到广告。</p>
<h4>#1.7: 确认广告代码服务器调用问题</h4>
<p>如果上面所有步骤都试过后都没有用，那很有可能是广告代码在服务器调用的时候出了问题。为了找到问题在哪，您需要一步步的查看服务器调用过程。</p>
<p>举一个简单的例子，用一个简单的HTML页面，页面里没有任何内容，只有一个简单的OpenX Javascript代码，运行这个页面：假设OpenX服务器运行在&#8221;www.example.com&#8221;域名下。</p>
<blockquote>
<pre>&lt;html&gt;
&lt;head&gt;
  &lt;title&gt;Text OpenX Page&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;

&lt;!--/* OpenX Javascript Tag v2.8.0 */--&gt;
&lt;script type='text/javascript'&gt;&lt;!--//&lt;![CDATA[
  var m3_u = (location.protocol=='https:'?'https://www.example.com/openx/www/delivery/ajs.php':'http://www.example.com/openx/www/delivery/ajs.php');
  var m3_r = Math.floor(Math.random()*99999999999);
  if (!document.MAX_used) document.MAX_used = ',';
  document.write ("&lt;scr"+"ipt type='text/javascript' src='"+m3_u);
  document.write ("?zoneid=1");
  document.write ('&amp;amp;cb=' + m3_r);
  if (document.MAX_used != ',') document.write ("&amp;amp;exclude=" + document.MAX_used);
  document.write (document.charset ? '&amp;amp;charset='+document.charset : (document.characterSet ? '&amp;amp;charset='+document.characterSet : ''));
  document.write ("&amp;amp;loc=" + escape(window.location));
  if (document.referrer) document.write ("&amp;amp;referer=" + escape(document.referrer));
  if (document.context) document.write ("&amp;context=" + escape(document.context));
  if (document.mmm_fo) document.write ("&amp;amp;mmm_fo=1");
  document.write ("'&gt;&lt;\/scr"+"ipt&gt;");
//]]&gt;--&gt;&lt;/script&gt;

&lt;/body&gt;
&lt;/html&gt;</pre>
</blockquote>
<p>当用户浏览器运行这个页面代码时，会从您的OpenX服务器上调用多个不同的URL。您可以通过工具（类似IE下的<a href="http://www.blunck.se/iehttpheaders/iehttpheaders.html">iehttpheaders</a>或者Firefox下的<a href="http://livehttpheaders.mozdev.org/">LiveHTTPHeaders</a>）看到这些URL调用。下面是当页面运行时被调用的URL：</p>
<ul>
<li>http://www.example.com/openx/www/delivery/ajs.php?zoneid=1&amp;cb=15028591281&amp;charset=UTF-8&amp;loc=http%3A//www.example.com/test.html</li>
</ul>
<ul>
<li>http://www.example.com/openx/www/delivery/ai.php?filename=468×60.gif&amp;contenttype=gif</li>
</ul>
<ul>
<li>http://www.example.com/openx/www/delivery/lg.php?bannerid=2&amp;campaignid=1&amp;zoneid=1&amp;loc=http%3A%2F%2Fwww.example.com%2Ftest.html&amp;cb=0c9f6849c2</li>
</ul>
<p>您可以看到，第一个URL是用来获取显示广告的代码，第二个URL用来获取实际的广告图片，第三个URL用来调用1×1 .gif图片以<a href="http://openxchina.org/archives/394">记录广告展现PV</a>。为了找到为什么广告显示不出来，第一个URL是最重要的，因为它是用来调用显示广告的代码。</p>
<p>将第一个URL通过浏览器打开，将会返回下面的结果：</p>
<blockquote>
<pre>var OX_cacd23fb = '';
OX_cacd23fb += "&lt;"+"a href=\'http://www.example.com/openx/www/delivery/ck.php?oaparams=2__bannerid=2__zoneid=1__cb=b5fcef6ca8__oadest=http%3A%2F%2Fwww.openxtips.com%2F\' target=\'_blank\'&gt;&lt;"+"img src=\'http://www.example.com/openx/www/delivery/ai.php?filename=468x60.gif&amp;contenttype=gif\' width=\'468\' height=\'60\' alt=\'\' title=\'\' border=\'0\' /&gt;&lt;"+"/a&gt;&lt;"+"div id=\'beacon_b5fcef6ca8\' style=\'position: absolute; left: 0px; top: 0px; visibility: hidden;\'&gt;&lt;"+"img src=\'http://www.example.com/openx/www/delivery/lg.php?bannerid=2&amp;amp;campaignid=1&amp;amp;zoneid=1&amp;amp;loc=http%3A%2F%2Fwww.example.com%2Ftest.html&amp;amp;cb=b5fcef6ca8\' width=\'0\' height=\'0\' alt=\'\' style=\'width: 0px; height: 0px;\' /&gt;&lt;"+"/div&gt;\n";
document.write(OX_cacd23fb);</pre>
</blockquote>
<p>这个是用来显示广告HTML内容的Javascript代码。</p>
<p>很显然，上面的示例和您的实际情况是不一样的，因为您不会使用“www.example.com”域名，可能您会将OpenX安装到不同的路径，也可能您用的不是Javascript代码。无论如何，基础的过程都是一样的，在包含广告代码的页面运行时，您看到的第一个URL调用应该就是用来产生广告内容的。</p>
<p>如果您发现本次调用并没有任何广告内容出现，那么很有可能是您的广告服务器安装出了些问题导致广告不能正常显示。可以通过下面的步骤来定位问题。</p>
<h4>#1.7.1: 检查Web服务器日志</h4>
<p>查看您的Web服务器日志，尝试找到用来返回广告内容的URL地址。如果这些URL被调用时出现了错误，将会在错误日志里有所记录。通过日志可以帮您找到为什么调用出错。最常见的调用错误原因是：</p>
<ul>
<li>文件或者目录的权限问题，没有权限调用OpenX下“var/cache”目录下的Cache文件或者没有权限运行OpenX下的某些代码。</li>
<li>数据服务器出错导致无法读取必须的广告信息（举例来说，数据库服务器没有运行，数据库有错误数据或错误表，数据库的用户名密码或者权限被修改过等等）</li>
</ul>
<h4>#1.7.2: 打开调试状态</h4>
<p>如果上面的Web服务器日志仍然不能帮助您找到为什么广告内容无法返回，您需要尝试打开系统调试状态以帮助您找到更多的信息。无论如何，在做这件事情前一定要小心，因为所有的错误信息都会在生产系统上时时显示。所以，这个是最后一招。</p>
<p>要想打开系统调试状态，编辑OpenX配置文件，按下面的说明修改：</p>
<blockquote>
<pre>[debug]
production=1</pre>
</blockquote>
<p>将production值设为0（或者&#8221;false&#8221;）。</p>
<p>同时，您可能需要<a href="https://www.ibm.com/developerworks/library/os-debug/#N1007D">修改PHP设置</a>以显示错误信息。</p>
<p>上面这些操作只能让您看到一些错误信息，这些可能会帮助您找到错误并修改错误。如果实在没有办法修复，可以给OpenX的开发团队<a href="http://www.openx.org/en/support/reporting-bugs">提交Bug</a>。</p>
<h3><a name="2.0">#2.0: 有广告显示，但不是想要的广告</a></h3>
<p>有时候，广告可以显示，但是显示的不是应该出现的广告。举例来说，可能会出现下面几种状况：</p>
<ul>
<li>所有您看到的广告都不是您认为应该看到的；</li>
<li>有些广告您认为应该看到的，但是从来都没有看到；</li>
<li>广告显示的次数和您的期望不一样。</li>
</ul>
<p>上面说的集中情况，下面这些步骤可能可以帮助您。</p>
<h4>#2.1: 您使用的是正确的广告代码么？</h4>
<p>一般来说，您看到的广告都不对的话都是因为使用的广告代码错了，经常都是在复制粘贴过程中弄错了。</p>
<p>尝试重新直接生成广告代码，并重新放到网站需要的位置。</p>
<h4>#2.2: 您希望看到的广告看不到，确认其已经生效或者连接到广告位上了么？</h4>
<p>重新确认下在<a href="http://www.openxtips.com/2009/05/tip-11-use-the-zone-probability-screen/">广告位显示概率界面</a>上，您期望显示的广告是有效的并且已经连接到您看到的广告位上了。另外重新确认下该广告的显示概率大于0！</p>
<h4>#2.3: 您希望看到的广告看不到，是新加的广告或者最近刚刚修改过的么？</h4>
<p>OpenX广告服务器使用缓存系统来保证广告投放的效率。因此，对广告的任何修改，包括连接新的广告到广告位上，将不会马上在投放中生效，除非<a href="http://www.openx.org/docs/2.8/adminguide/Global+settings+-+banner+delivery">广告缓存时间</a>到了。</p>
<p>如果您希望看到的广告看不到，并且广告是新加的，或者是刚刚连接到广告位上，亦或是修改过，在缓存时间到了后在确认广告是否能够正常显示。</p>
<h4>#2.4: 您希望看到的广告看不到，确认该广告设置了目标用户或者频次？</h4>
<p>有时候，广告实际上是被投放了，但只是您看不到，可能是因为您设置了广告投放的目标用户或者频次，导致这些广告只能被其他特定用户看到。</p>
<p>使用<a href="http://www.openxtips.com/2009/05/tip-11-use-the-zone-probability-screen/">广告位显示概率界面</a>快速的查看下广告是否设置了目标用户或者频次，如果设置了，看下这些设置是否正确。您也可以查看下报表确认您看不到的广告是否被投放了。</p>
<h4>#2.5: 您运行的是第三方的广告联盟广告么？</h4>
<p>有时候，您可能在您的网站上看到了不应该出现的广告。常见的原因是因为您正在展示第三方的广告联盟广告，而第三方广告提供了新的广告主，亦或是提供了以前没有使用过的新广告格式。</p>
<p>尝试使用工具（类似IE下的<a href="http://www.blunck.se/iehttpheaders/iehttpheaders.html">iehttpheaders</a>或者Firefox下的<a href="http://livehttpheaders.mozdev.org/">LiveHTTPHeaders</a>）查看广告点击时的URL调用。这些可以帮您确认是哪个广告联盟在显示这些不期望展示的广告。</p>
<h4>#2.6: 您在运行OpenX的Market么？</h4>
<p>在OpenX 2.8版本，OpenX Market为网站主提供了为广告项目设置基础价格的功能，当某个OpenX Market里面的广告主希望付高于这个价格的钱来买这个广告展示的时候，OpenX Market将会代替原有广告项目的广告而显示这个广告主的广告。</p>
<p>虽然这个对于使用OpenX的发布商是一个好的消息，因为这是一种无风险的提升收入的方式。但同时也意味着任何时候，只要有OpenX Market的广告主愿意付更多的钱购买当前的广告展示，那所谓的“意外”广告就会被显示。</p>
<p>如果您发现当前显示的“意外”广告不是来自于第三方广告联盟，检查下广告项目，确认您是否打开了OpenX Market。这些可能是为什么您看到了“意外”广告的原因（令人高兴的赚钱广告！）。</p>
]]></content:encoded>
			<wfw:commentRss>http://openxchina.org/archives/405/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://openxchina.org/archives/405</feedburner:origLink></item>
		<item>
		<title>理解请求(Request)和展示(Impression)的区别</title>
		<link>http://feedproxy.google.com/~r/openxchina/~3/ciUrMa98dgE/394</link>
		<comments>http://openxchina.org/archives/394#comments</comments>
		<pubDate>Tue, 02 Mar 2010 07:23:34 +0000</pubDate>
		<dc:creator>pinson</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[PV]]></category>
		<category><![CDATA[数据差异]]></category>
		<category><![CDATA[请求数]]></category>

		<guid isPermaLink="false">http://openxchina.org/?p=394</guid>
		<description><![CDATA[英文原文地址：http://www.openxtips.com/2009/05/tip-13-understand-the-difference-between-requests-and-impressions/
如果您看过理解OpenX的广告投放逻辑，那么您可能会注意到当广告投放的时候，会有两个数据被记录，一个是请求（Request），另一个是展示PV（Impression）。1.
理解请求和展示PV之间的区别是非常重要的，一旦理解了，可以帮您对于OpenX广告投放性能有更深入的理解。
在OpenX数据库里请求和PV展示的数据结构
在深入到请求和PV展示的区别之前，需要了解到请求数和PV展示数记录在哪里。
如果您运行的是OpenX 2.4或者OpenX 2.6版本，那么请求数记录在&#8221;data_raw_ad_request&#8221;表2中，而对应的PV展示数则记录在&#8221;data_raw_ad_impression&#8221;表中。
如果您运行的是OpenX 2.8，那么请求数记录在&#8221;data_bkt_r&#8221;表中，而对应的PV展示数则记录在&#8221;data_bkt_m&#8221;表中。
如果您从来没有看过这些数据表，您可以尝试登录到OpenX数据库中，简单的看下这些数据表。但是请一定要小心，这些表特别是在早期的OpenX 2.4和OpenX 2.6版本可能会非常的大，所以在运行SQL命令的时候可能会占用很长的时间，而且也会影响到您服务器的性能。所以，在查看这些表的时候最好限制下查看的行数，您可以使用下面这些命令进行查看：3:
OpenX 2.4 &#38; OpenX 2.6
SELECT * FROM data_raw_ad_request ORDER BY date_time DESC LIMIT 20;
SELECT * FROM data_raw_ad_impression ORDER BY date_time DESC LIMIT 20;
OpenX 2.8
SELECT * FROM data_bkt_r ORDER BY interval_start DESC LIMIT 20;
SELECT * FROM data_bkt_m ORDER BY interval_start DESC LIMIT 20;
运行上面这些命令后，您应该可以看到记录的请求和PV展示数据。
如果您没有看到任何请求和PV展示数据，确认下近期是否投放过任何广告？尝试投放一些广告，然后再看看是否能看到请求数和PV展示数被记录。
如果您看到有PV展示数据，但是没有请求数据，并且您运行的是OpenX 2.4或者OpenX 2.6版本，您需要确认下是否允许记录请求数？检查下面的设置：

OpenX 2.4：使用管理员帐号登录进入OpenX，进入设置，主设置，统计和维护设置，确认“记录每次广告请求”是否打开。
OpenX 2.6：以管理员身份4进入界面，进入帐号设置，全局设置，广告记录设置，确认“记录每次广告请求”是否打开。

请注意，作为OpenX 2.4和OpenX 2.6版本是没有使用OpenX 2.8版本中更新更快的日志记录系统的，打开请求数记录意味着在服务器上增加了新的负载。在打开这个设置之前要考虑清楚，一定要密切监控OpenX服务器以确保服务器性能。
在OpenX用户界面上请求数和PV展示数的显示
现在您已经在数据库里见到了请求和PV展示的数据，并且确认这些数据被记录，那么才可以保证在OpenX用户界面里面看到这些数据。默认情况是PV展示数据可以在OpenX用户界面上显示出来，但是请求数则不可见。要想在用户界面看到这些请求数据：

OpenX 2.4：使用管理员帐号登录OpenX，进入设置，朱设置，界面默认。在这里您可以找到用户界面里可以显示的各种统计界面的字段列表。您可以在统计报表的界面中看到请求数，如果您希望显示请求数数据，选择“显示请求数列”即可
OpenX [...]]]></description>
			<content:encoded><![CDATA[<p>英文原文地址：<a href="http://www.openxtips.com/2009/05/tip-13-understand-the-difference-between-requests-and-impressions/">http://www.openxtips.com/2009/05/tip-13-understand-the-difference-between-requests-and-impressions/</a></p>
<p>如果您看过<a title="Permanent Link to 理解OpenX的广告投放逻辑" rel="bookmark" href="http://openxchina.org/archives/375">理解OpenX的广告投放逻辑</a>，那么您可能会注意到当广告投放的时候，会有两个数据被记录，一个是请求（Request），另一个是展示PV（Impression）。<sup><a id="identifier_0_365" href="#footnote_0_365">1</a></sup>.</p>
<p>理解请求和展示PV之间的区别是非常重要的，一旦理解了，可以帮您对于OpenX广告投放性能有更深入的理解。</p>
<h3>在OpenX数据库里请求和PV展示的数据结构</h3>
<p>在深入到请求和PV展示的区别之前，需要了解到请求数和PV展示数记录在哪里。</p>
<p>如果您运行的是OpenX 2.4或者OpenX 2.6版本，那么请求数记录在&#8221;data_raw_ad_request&#8221;表<sup><a id="identifier_1_365" href="#footnote_1_365">2</a></sup>中，而对应的PV展示数则记录在&#8221;data_raw_ad_impression&#8221;表中。</p>
<p>如果您运行的是OpenX 2.8，那么请求数记录在&#8221;data_bkt_r&#8221;表中，而对应的PV展示数则记录在&#8221;data_bkt_m&#8221;表中。</p>
<p>如果您从来没有看过这些数据表，您可以尝试登录到OpenX数据库中，简单的看下这些数据表。但是请一定要小心，这些表特别是在早期的OpenX 2.4和OpenX 2.6版本可能会非常的大，所以在运行SQL命令的时候可能会占用很长的时间，而且也会影响到您服务器的性能。所以，在查看这些表的时候最好限制下查看的行数，您可以使用下面这些命令进行查看：<sup><a id="identifier_2_365" href="#footnote_2_365">3</a></sup>:</p>
<h4>OpenX 2.4 &amp; OpenX 2.6</h4>
<blockquote><p>SELECT * FROM data_raw_ad_request ORDER BY date_time DESC LIMIT 20;</p>
<p>SELECT * FROM data_raw_ad_impression ORDER BY date_time DESC LIMIT 20;</p></blockquote>
<h4>OpenX 2.8</h4>
<blockquote><p>SELECT * FROM data_bkt_r ORDER BY interval_start DESC LIMIT 20;</p>
<p>SELECT * FROM data_bkt_m ORDER BY interval_start DESC LIMIT 20;</p></blockquote>
<p>运行上面这些命令后，您应该可以看到记录的请求和PV展示数据。</p>
<p>如果您没有看到任何请求和PV展示数据，确认下近期是否投放过任何广告？尝试投放一些广告，然后再看看是否能看到请求数和PV展示数被记录。</p>
<p>如果您看到有PV展示数据，但是没有请求数据，并且您运行的是OpenX 2.4或者OpenX 2.6版本，您需要确认下是否允许记录请求数？检查下面的设置：</p>
<ul>
<li>OpenX 2.4：使用管理员帐号登录进入OpenX，进入设置，主设置，统计和维护设置，确认“记录每次广告请求”是否打开。</li>
<li>OpenX 2.6：以管理员身份<sup><a id="identifier_3_365" href="#footnote_3_365">4</a></sup>进入界面，进入帐号设置，全局设置，广告记录设置，确认“记录每次广告请求”是否打开。</li>
</ul>
<p>请注意，作为OpenX 2.4和OpenX 2.6版本是没有使用OpenX 2.8版本中更新更快的日志记录系统的，打开请求数记录意味着在服务器上增加了新的负载。在打开这个设置之前要考虑清楚，一定要密切监控OpenX服务器以确保服务器性能。</p>
<h3>在OpenX用户界面上请求数和PV展示数的显示</h3>
<p>现在您已经在数据库里见到了请求和PV展示的数据，并且确认这些数据被记录，那么才可以保证在OpenX用户界面里面看到这些数据。默认情况是PV展示数据可以在OpenX用户界面上显示出来，但是请求数则不可见。要想在用户界面看到这些请求数据：</p>
<ul>
<li>OpenX 2.4：使用管理员帐号登录OpenX，进入设置，朱设置，界面默认。在这里您可以找到用户界面里可以显示的各种统计界面的字段列表。您可以在统计报表的界面中看到请求数，如果您希望显示请求数数据，选择“显示请求数列”即可</li>
<li>OpenX 2.6：以管理员身份<sup><a id="identifier_4_365" href="#footnote_4_365">5</a></sup>进入界面，进入我的帐号，帐号设置，用户界面设置。这里可以找到用户界面里可以显示的各种统计报表界面的字段列表。您可以在统计报表的界面中看到请求数，如果您希望显示请求数，选择“请求数”即可。您也可以更换各列的显示顺序。</li>
<li>OpenX 2.8：以管理员身份<sup><a id="identifier_5_365" href="#footnote_5_365">6</a></sup>进入界面，进入我的帐号，设置，用户界面设置。这里可以找到用户界面里可以显示的各种统计报表界面的字段列表。您可以在统计报表的界面中看到请求数，如果您希望显示请求数，选择“请求数”即可。您也可以更换各列的显示顺序。</li>
</ul>
<p>注意：OpenX 2.4可以针对不同的帐号类型设置可以显示的列，而这些功能在OpenX 2.6和OpenX 2.8里则不可以，对应的是每个账户可以自行设置看到哪些列。上面的说明只是简单的修改了主帐号的设置，而其他所有帐号将默认继承主帐号的设置。</p>
<h3>那不同的地方在哪里？为什么我们要关心？</h3>
<p>如果您好好的看过<a title="理解OpenX的广告投放逻辑" href="http://openxchina.org/archives/375">理解OpenX的广告投放逻辑</a>，您会发现一旦OpenX服务器决定哪个广告要被展现马上就会记录请求。而PV展示则直到广告被实际展现后才会记录。<sup><a id="identifier_6_365"  href="#footnote_6_365">7</a></sup></p>
<p>您会发现，如果您记录了请求数和PV展示数，并且在用户界面里都有显示，作为简单的原则来讲，请求数应该是大于PV展示数的。请求数和PV展示数据的差异主要源自于“丢失率”，高丢失率主要会产生两个影响：</p>
<ol>
<li>如果您的OpenX服务器只是一直在选择广告但是却不显示，那么您的服务器所作的工作意义不大，从而服务器的性能低于其应该有的能力，而这只会浪费钱。</li>
<li>如果用户在浏览您的网站并请求广告，但是广告却没有被显示出来，那就意味着您在损失收入。无论您的项目是以CPM，CPC或者CPA的计费模式，如果广告没有被显示出来，您也不会产生收入。</li>
</ol>
<p>那么，什么是高丢失率？在行业里面并没有定义这样的标准。据经验来看，10%是比较能够接受的，当然这个数值越低越好。</p>
<h3>怎样解决丢失率不好的问题？</h3>
<p>这个问题，是个很大的问题。在讨论如何解决这个问题之前，需要先明确下为什么广告被挑选出来但是却没有实际显示。下面这些是广告不显示的最重要的几个原因，每个原因后面都对应着相应的解决问题建议：</p>
<h4>错误使用了单页面调用代码</h4>
<p>单页面调用代码只向OpenX请求一次来获取一个页面上所有广告为对应的广告。默认来说，单页面调用代码会选择该网站下所有的广告位对应的广告。所以，如果在页面上如果只显示几个广告位，那最好在<a href="http://www.openxtips.com/2009/03/tip-2-correctly-using-single-page-call/">代码使用前预先定义</a>，来避免广告被选择了但却没有别显示出来。</p>
<h4>广告文件过大</h4>
<p>如果广告文件非常大（例如大的Flash广告等等），那网速比较低的用户可能在广告还没有完全下载下来之前就已经离开了。尽量避免使用非常的尺寸的广告，当然如果必须投放，可以考虑购买 <a href="http://www.openx.org/en/support/geotargeting">MaxMind网速地址库</a>来针对告诉网站用户投放大尺寸广告，对应的低网速用户则显示小尺寸广告。</p>
<h4>第三方广告速度较慢</h4>
<p>大部分的OpenX用户通过广告联盟来获得主要的收入，广告联盟提供一个HTML代码来展示广告。现实状况是一些第三方的服务器并不如期望的速度快。最简单的办法是通过报表监控广告的丢失率，来判断是哪个广告联盟影响了丢失率。如果找到了，考虑他们产生的收入水平，如果这些并非收入的主要来源，可以考虑不要投放这些联盟广告可能会为您的网站带来更多的收入。</p>
<h4>网站速度慢以及不好的广告位置</h4>
<p>如果您的网站本身速度较慢，而且广告文件较大，用户可能在页面还没有完全下载之前就已经离开了。在这种情况下，放在页面底部的广告可能没有机会完成下载用户就已经离开了。建议可以升级您的网站服务器来保证网站速度提升，对应的需要重新考虑下网站页面的设计和广告的位置。</p>
<ol>
<li id="footnote_0_365">OpenX 2.8默认会记录请求数和PV展示数，而OpenX 2.6和2.4版本，请求数记录是选择性的，默认是不选的。 [<a href="#identifier_0_365">↩</a>]</li>
<li id="footnote_1_365">如果请求数记录被打开[<a href="#identifier_1_365">↩</a>]</li>
<li id="footnote_2_365">如果您的OpenX安装时使用了数据库表前缀，这些命令可能需要修改。例如，“phpads_”，“oa_”，“ox_”等等。 [<a href="#identifier_2_365">↩</a>]</li>
<li id="footnote_3_365">您需要使用管理员帐号登录OpenX。[<a href="#identifier_3_365">↩</a>]</li>
<li id="footnote_4_365">同上，您需要使用管理员帐号登录OpenX。[<a href="#identifier_4_365">↩</a>]</li>
<li id="footnote_5_365">同上，您需要使用管理员帐号登录OpenX。[<a href="#identifier_5_365">↩</a>]</li>
<li id="footnote_6_365">只有一种例外情况，请求数和PV展示数会同时记录，在<a title="理解OpenX的广告投放逻辑" href="http://openxchina.org/archives/375">理解OpenX的广告投放逻辑</a>里面提到过，就是通过图片，无Cookie图片或者XML-RPC广告代码投放广告。因为这些广告代码不支持通过标记记录PV。[<a href="#identifier_6_365">↩</a>]</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://openxchina.org/archives/394/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://openxchina.org/archives/394</feedburner:origLink></item>
		<item>
		<title>理解OpenX的广告投放逻辑</title>
		<link>http://feedproxy.google.com/~r/openxchina/~3/SG7J0Unp-oU/375</link>
		<comments>http://openxchina.org/archives/375#comments</comments>
		<pubDate>Mon, 01 Mar 2010 10:24:06 +0000</pubDate>
		<dc:creator>pinson</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[投放]]></category>
		<category><![CDATA[逻辑]]></category>

		<guid isPermaLink="false">http://openxchina.org/?p=375</guid>
		<description><![CDATA[英文原文地址：http://www.openxtips.com/2009/04/tip-8-understand-the-banner-delivery-process/
广告调用过程中到底发生了什么？为什么我需要知道？这个问题很简单，虽然描述这个过程显得有些技术化，但是理解广告投放逻过程对于抓住广告投放逻辑至关重要，而且这个问题是理解其他OpenX主题的基础。
虽然下面描述的步骤主要针对OpenX2.8版本，但其步骤和早期版本差不多，只是以前的版本效率低一些而已。无论如何，基本的理念是一致的。
广告投放步骤
无论您使用何种广告代码，广告投放步骤都是一样的。经过一些环境初始化后，广告服务器使用下面的步骤来决定投放哪一个广告。

找到所有连接到该广告位的有效广告1。
是否有Contract(Exclusive)项目下的有效广告？如果有，则进入下面的步骤：

是否有Contract(Exclusive)项目下的广告超过了投放限制2？如果有，抛弃掉这些广告。
是否有Contract(Exclusive)项目下的广告和当前广告代码不相容3？如果有，抛弃掉这些广告。
还有广告剩下么？如果有，进入下面的步骤：

通过项目权重/广告权重步骤选择一个广告。（下面有详细说明）
使用所选广告ID和广告位ID记录一次请求。
显示广告。Display the banner.
使用所选广告ID和广告位ID记录一个PV日志。




如果当前点达到后，就不会有Contract(Exclusive)项目下的广告展现。
是否有Contract项目下的有效广告？如果有，进入下面的步骤：

是否有Contract项目下的广告超过了投放限制？如果有，抛弃掉这些广告。
是否有Contract项目下的广告和当前代码不相容？如果有，抛弃掉这些广告。
还有广告剩下么？如果有，进入下面的步骤：

随机Possibly 通过Contract项目广告投放步骤在这些广告中选择一个广告。(查看详情).
如果If 有广告被选择了：

使用所选广告ID和广告位ID记录一次请求。
显示广告。
使用所选广告ID和广告位ID记录一个PV日志。






如果当前点达到，就不会有Contract(Exclusive)项目下的广告可以展示，并且Contract项目下的广告也不会被展示。

是否有抄底项目下的有效广告？如果有，进入下面的步骤：

是否有抄底项目下的广告超过了投放限制？如果有，抛弃掉这些广告。
是否有抄底项目下的广告和当前代码不相容？如果有，抛弃掉这些广告。
还有广告剩下么？如果有，进入下面的步骤：

通过项目权重/广告权重步骤选择一个广告。（下面有详细说明）
使用所选广告ID和广告位ID记录一次请求。
显示广告。
使用所选广告ID和广告位ID记录一个PV日志。




如果当前点达到，则不会有Contract(Exclusive)项目下的广告可以展示，并且Contract项目下的广告也不会被展示，另外抄底项目下的广告也不会被展示。
当前广告为是否通过广告位链连接到其他广告位？如果是，则按照第一步以新广告位重新执行。
如果当前点达到，则不会有Contract(Exclusive)项目下的广告可以展示，并且Contract项目下的广告也不会被展示，另外抄底项目下的广告也不会被展示，而且该广告为没有通过广告位链连接到其他广告为。

是否设置了默认广告？如果有，进入下面的步骤：

使用所选广告ID和广告位ID记录一次请求。
显示广告。
使用所选广告ID和广告位ID记录一个PV日志。


如果当前点达到，则没有广告可以展现。
展示一个1×1的空白广告。

项目权重/广告权重处理步骤
在上述步骤中，当测试Contract(Exclusive)项目下的有效广告或者测试抄底项目下的有效广告时，如果有超过一个广告可以投放，则按照以下步骤来决定投放哪一个广告，不同的版本步骤会稍有不同：
OpenX 2.8.1以后版本

在广告位对应的所有广告里，找到其所属项目。
加和所有项目的权重。
在0和所有项目加和权重区间生成一个随机数，通过这个随机数来选择一个项目。
针对所选项目下所有适合的广告，加和所有广告的权重。
在0和所有广告加和权重区间生成一个随机数，通过这个随机数来选择一个广告。

OpenX 2.8.0以前版本

针对所有广告位对应的广告，把每个广告的权重权重乘以对应的项目权重，获得一个总体广告/项目权重值。
加和所有广告的总体权重值。
将每个广告的总体权重值除以所有广告的总体权重值。（此步骤保证每个总体权重值加和后值为1）
在0和1之间生成一个随机数，通过这个随机数来选择一个广告，所以广告是基于项目/广告权重来进行分配投放的。

Contract项目广告选择步骤
在上述步骤中，在测试Contract项目下的广告投放时，如果有超过一个广告可以被投放，可以通过下面的步骤来决定投放哪一个广告：

在有效广告中查找优先级为10的Contract项目（如果有）：

针对每个广告，选择预先计算的优先级值乘以一个预先计算的优先级参数值4得到总体优先级参数值。
加和所有广告的总体优先级参数值。
将每个广告的总体优先级参数值除以所有广告的总体优先级参数加和值。（此步骤保证新的总体优先级参数值加和后不大于1.5）
在0和1之间生成一个随机值，通过这个随机数来选择一个广告，也有可能选择不了。


如果没有广告被选择，则针对Contract项目优先级为9，8，然后7的所有广告重复上面的步骤。直到对应的Contract项目优先级为1。

PV日志记录顺序

特殊广告代码（图片，无Cookie图片，XML-RPC）在展示广告后不记录PV日志，而对应的在记录请求的时候就被记录的PV日志。这就意味着，在展示广告之前，就已经记录了PV日志。这是因为这些广告代码，不适合投放PV日志记录的标记。6

一个有效的广告是指所属项目正在运行，而且该广告没有被禁止使用。[↩]
这个意味着，该广告实际上试图被投放出来，但是可能由于所设置的投放限制或者投放策略问题而没有被显示。 [↩]
举个例子，HTML广告在使用图片或者无Cookie图片广告代码时就不能显示出来。因为那些广告代码只能投放图片广告。 [↩]
这些值来自于Maintenance Prioritization Engine. [↩]
如果Maintenance Prioritization Engine决定Contract项目不用使用所有可用流量来满足项目需求的时候，则可能加和的新优先级参数值小于1。[↩]
日志记录标记其实是一个单独投放的1×1 .gif像素图片，当然如果一个广告没有真正的投放的用户看到的网页上，则对应的广告PV不会记录。[↩]

]]></description>
			<content:encoded><![CDATA[<p>英文原文地址：<a href="http://www.openxtips.com/2009/04/tip-8-understand-the-banner-delivery-process/">http://www.openxtips.com/2009/04/tip-8-understand-the-banner-delivery-process/</a></p>
<p>广告调用过程中到底发生了什么？为什么我需要知道？这个问题很简单，虽然描述这个过程显得有些技术化，但是理解广告投放逻过程对于抓住广告投放逻辑至关重要，而且这个问题是理解其他OpenX主题的基础。</p>
<p>虽然下面描述的步骤主要针对OpenX2.8版本，但其步骤和早期版本差不多，只是以前的版本效率低一些而已。无论如何，基本的理念是一致的。</p>
<h3>广告投放步骤</h3>
<p>无论您使用何种广告代码，广告投放步骤都是一样的。经过一些环境初始化后，广告服务器使用下面的步骤来决定投放哪一个广告。</p>
<ol>
<li>找到所有连接到该广告位的有效广告<sup><a id="identifier_0_173" href="#footnote_0_173">1</a></sup>。</li>
<li>是否有Contract(Exclusive)项目下的有效广告？如果有，则进入下面的步骤：
<ol>
<li>是否有Contract(Exclusive)项目下的广告超过了投放限制<sup><a id="identifier_1_173"  href="#footnote_1_173">2</a></sup>？如果有，抛弃掉这些广告。</li>
<li>是否有Contract(Exclusive)项目下的广告和当前广告代码不相容<sup><a id="identifier_2_173"  href="#footnote_2_173">3</a></sup>？如果有，抛弃掉这些广告。</li>
<li>还有广告剩下么？如果有，进入下面的步骤：
<ol>
<li>通过项目权重/广告权重步骤选择一个广告。（<a href="#weight">下面有详细说明</a>）</li>
<li>使用所选广告ID和广告位ID记录一次请求。</li>
<li>显示广告。Display the banner.</li>
<li>使用所选广告ID和广告位ID记录一个PV日志。</li>
</ol>
</li>
</ol>
</li>
<li><em>如果当前点达到后，就不会有Contract(Exclusive)项目下的广告展现。</em></li>
<li>是否有Contract项目下的有效广告？如果有，进入下面的步骤：
<ol>
<li>是否有Contract项目下的广告超过了投放限制？如果有，抛弃掉这些广告。</li>
<li>是否有Contract项目下的广告和当前代码不相容？如果有，抛弃掉这些广告。</li>
<li>还有广告剩下么？如果有，进入下面的步骤：
<ol>
<li><em>随机Possibly</em> 通过Contract项目广告投放步骤在这些广告中选择一个广告。(<a href="#mpe">查看详情</a>).</li>
<li><em>如果If</em> 有广告被选择了：
<ol>
<li>使用所选广告ID和广告位ID记录一次请求。</li>
<li>显示广告。</li>
<li>使用所选广告ID和广告位ID记录一个PV日志。</li>
</ol>
</li>
</ol>
</li>
</ol>
</li>
<li><em>如果当前点达到，就不会有Contract(Exclusive)项目下的广告可以展示，并且Contract项目下的广告也不会被展示。<br />
</em></li>
<li>是否有抄底项目下的有效广告？如果有，进入下面的步骤：
<ol>
<li>是否有抄底项目下的广告超过了投放限制？如果有，抛弃掉这些广告。</li>
<li>是否有抄底项目下的广告和当前代码不相容？如果有，抛弃掉这些广告。</li>
<li>还有广告剩下么？如果有，进入下面的步骤：
<ol>
<li>通过项目权重/广告权重步骤选择一个广告。（<a href="#weight">下面有详细说明</a>）</li>
<li>使用所选广告ID和广告位ID记录一次请求。</li>
<li>显示广告。</li>
<li>使用所选广告ID和广告位ID记录一个PV日志。</li>
</ol>
</li>
</ol>
</li>
<li><em>如果当前点达到，则不会有Contract(Exclusive)项目下的广告可以展示，并且Contract项目下的广告也不会被展示，另外抄底项目下的广告也不会被展示。</em></li>
<li>当前广告为是否通过<a href="http://www.openx.org/docs/2.8/userguide/zone+advanced">广告位链</a>连接到其他广告位？如果是，则按照第一步以新广告位重新执行。</li>
<li><em>如果当前点达到，则不会有Contract(Exclusive)项目下的广告可以展示，并且Contract项目下的广告也不会被展示，另外抄底项目下的广告也不会被展示，而且该广告为没有通过广告位链连接到其他广告为。<br />
</em></li>
<li>是否设置了<a href="http://www.openx.org/docs/2.8/userguide/account+preferences">默认广告</a>？如果有，进入下面的步骤：
<ol>
<li>使用所选广告ID和广告位ID记录一次请求。</li>
<li>显示广告。</li>
<li>使用所选广告ID和广告位ID记录一个PV日志。</li>
</ol>
</li>
<li><em>如果当前点达到，则没有广告可以展现。</em></li>
<li>展示一个1×1的空白广告。</li>
</ol>
<h3><a name="weight">项目权重/广告权重处理步骤</a></h3>
<p>在上述步骤中，当测试Contract(Exclusive)项目下的有效广告或者测试抄底项目下的有效广告时，如果有超过一个广告可以投放，则按照以下步骤来决定投放哪一个广告，不同的版本步骤会稍有不同：</p>
<h3><a href="http://openxchina.org" class="kblinker" title="More about openx &raquo;">OpenX</a> 2.8.1以后版本</h3>
<ol>
<li>在广告位对应的所有广告里，找到其所属项目。</li>
<li>加和所有项目的权重。</li>
<li>在0和所有项目加和权重区间生成一个随机数，通过这个随机数来选择一个项目。</li>
<li>针对所选项目下所有适合的广告，加和所有广告的权重。</li>
<li>在0和所有广告加和权重区间生成一个随机数，通过这个随机数来选择一个广告。</li>
</ol>
<h3>OpenX 2.8.0以前版本</h3>
<ol>
<li>针对所有广告位对应的广告，把每个广告的权重权重乘以对应的项目<a href="http://www.openx.org/docs/2.8/userguide/Adding+a+banner">权重</a>，获得一个总体广告/项目权重值。</li>
<li>加和所有广告的总体权重值。</li>
<li>将每个广告的总体权重值除以所有广告的总体权重值。（此步骤保证每个总体权重值加和后值为1）</li>
<li>在0和1之间生成一个随机数，通过这个随机数来选择一个广告，所以广告是基于项目/广告权重来进行分配投放的。</li>
</ol>
<h3><a name="mpe">Contract项目广告选择步骤</a></h3>
<p>在上述步骤中，在测试Contract项目下的广告投放时，如果有超过一个广告可以被投放，可以通过下面的步骤来决定投放哪一个广告：</p>
<ol>
<li>在有效广告中查找<a href="http://www.openx.org/docs/2.8/userguide/Adding+campaign">优先级</a>为10的Contract项目（如果有）：
<ol>
<li>针对每个广告，选择预先计算的优先级值乘以一个预先计算的优先级参数值<sup><a id="identifier_3_173" href="#footnote_3_173">4</a></sup>得到总体优先级参数值。</li>
<li>加和所有广告的总体优先级参数值。</li>
<li>将每个广告的总体优先级参数值除以所有广告的总体优先级参数加和值。（此步骤保证新的总体优先级参数值加和后不大于1.<sup><a id="identifier_4_173" href="#footnote_4_173">5</a></sup>）</li>
<li>在0和1之间生成一个随机值，通过这个随机数来选择一个广告，也有可能选择不了。</li>
</ol>
</li>
<li>如果没有广告被选择，则针对Contract项目优先级为9，8，然后7的所有广告重复上面的步骤。直到对应的Contract项目优先级为1。</li>
</ol>
<h3><a name="variation">PV日志记录顺序<br />
</a></h3>
<p>特殊广告代码（<a href="http://www.openx.org/docs/2.8/userguide/zone+invocation">图片，无Cookie图片，XML-RPC</a>）在展示广告后不记录PV日志，而对应的在记录请求的时候就被记录的PV日志。这就意味着，在展示广告之前，就已经记录了PV日志。这是因为这些广告代码，不适合投放PV日志记录的标记。<sup><a id="identifier_5_173" href="#footnote_5_173">6</a></sup></p>
<ol>
<li id="footnote_0_173">一个有效的广告是指所属项目正在运行，而且该广告没有被禁止使用。[<a href="#identifier_0_173">↩</a>]</li>
<li id="footnote_1_173">这个意味着，该广告实际上试图被投放出来，但是可能由于所设置的投放限制或者<a href="http://www.openx.org/docs/2.8/userguide/banner+delivery+options">投放策略</a>问题而没有被显示。 [<a href="#identifier_1_173">↩</a>]</li>
<li id="footnote_2_173">举个例子，HTML广告在使用图片或者无Cookie图片广告代码时就不能显示出来。因为那些广告代码只能投放图片广告。 [<a href="#identifier_2_173">↩</a>]</li>
<li id="footnote_3_173">这些值来自于<a href="https://developer.openx.org/wiki/display/COMM/Prioritisation+Engine">Maintenance Prioritization Engine</a>. [<a href="#identifier_3_173">↩</a>]</li>
<li id="footnote_4_173">如果<a href="https://developer.openx.org/wiki/display/COMM/Prioritisation+Engine">Maintenance Prioritization Engine</a>决定Contract项目不用使用所有可用流量来满足项目需求的时候，则可能加和的新优先级参数值小于1。[<a href="#identifier_4_173">↩</a>]</li>
<li id="footnote_5_173">日志记录标记其实是一个单独投放的1×1 .gif像素图片，当然如果一个广告没有真正的投放的用户看到的网页上，则对应的广告PV不会记录。[<a href="#identifier_5_173">↩</a>]</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://openxchina.org/archives/375/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://openxchina.org/archives/375</feedburner:origLink></item>
		<item>
		<title>基于Nginx, lighttpd/apache上的OpenX高性能集群配置手册</title>
		<link>http://feedproxy.google.com/~r/openxchina/~3/DSQPRB3ObJs/368</link>
		<comments>http://openxchina.org/archives/368#comments</comments>
		<pubDate>Sun, 21 Feb 2010 02:01:29 +0000</pubDate>
		<dc:creator>pinson</dc:creator>
				<category><![CDATA[模式&应用]]></category>
		<category><![CDATA[性能]]></category>
		<category><![CDATA[手册]]></category>
		<category><![CDATA[规模应用]]></category>
		<category><![CDATA[集群]]></category>

		<guid isPermaLink="false">http://openxchina.org/?p=368</guid>
		<description><![CDATA[本文英文原文地址：http://www.sherin.co.in/openxcluster121/
编者注：本文非常详细的描述了OpenX集群的配置方法，对于想通过OpenX做大规模服务的应用来说应该有比较大的帮助。原文是英文的，为了保证意思的表达就不翻译成中文了。
1. Introduction 
1.1 Why the name 121 Cluster?
1.2 Technology
2. System Requirements
2.1 Load Balancer Node
2.2 Web Servers  Node 
2.3 Database Server Node
3. Install and Configure Load Balancer
4. Install and Configure Webserver
4.1 File system configuration 
4.2  Lighttpd installation
4.3 Apache installation
5. Install and Configure Database Server
6. Optimization
Appendix-A About The Author
Appendix-B License
1. Introduction 
This document help you [...]]]></description>
			<content:encoded><![CDATA[<p>本文英文原文地址：<a href="http://www.sherin.co.in/openxcluster121/">http://www.sherin.co.in/openxcluster121/</a></p>
<p>编者注：本文非常详细的描述了OpenX集群的配置方法，对于想通过OpenX做大规模服务的应用来说应该有比较大的帮助。原文是英文的，为了保证意思的表达就不翻译成中文了。</p>
<h3><a href="#introduction">1. Introduction </a></h3>
<p><a href="#whyc">1.1 Why the name 121 Cluster?</a></p>
<p><a href="#tech">1.2 Technology</a></p>
<h3><a href="#requirements">2. System Requirements</a></h3>
<p><a href="#lbn">2.1 Load Balancer Node</a><br />
<a href="#wsn">2.2 Web Servers  Node </a><br />
<a href="#sr">2.3 Database Server Node</a></p>
<h3><a href="#ho">3. Install and Configure Load Balancer</a></h3>
<h3><a href="#ossh">4. Install and Configure Webserver</a></h3>
<p><a href="#upr">4.1 File system configuration </a><br />
<a href="#usr">4.2  Lighttpd installation</a><br />
<a href="#sc">4.3 Apache installation</a></p>
<h3><a href="#dbserver">5. Install and Configure Database Server</a></h3>
<h3><a href="#optimization">6. Optimization</a></h3>
<h3><a href="#author">Appendix-A About The Author</a></h3>
<h3><a href="#license">Appendix-B License</a></h3>
<h3><a name="introduction">1. Introduction </a></h3>
<p>This document help you to setup a simple cluster for starters. This  configuration using the best and popular software configuration for getting  better stability and performance. This can be used for Openx cluster platforms  and large vbulletin forums. Please not this is not a high availability solution  but cluster. You can build this cluster with a minimum of 4 servers.</p>
<h4><a name="whyc">1.1 Why the name 121 Cluster?</a></h4>
<p>Let me explain 1-2-1 cluster means ,</p>
<ul>
<li>1 &#8211; Load balancer</li>
<li>2 &#8211; Werbserver , or multiple of 2</li>
<li>1 &#8211; Database server</li>
</ul>
<p>So this configuration is based on one load  balancer , two or multiple of 2&#8217;s of webservers and one database server. Here  all are servers there is no need to buy external devices. This is the simplest  and well optimized cluster that you can build. You can see a graphical  representation of this cluster as below,</p>
<div><img src="http://openxchina.org/wp-content/uploads/HLIC/dd2065731ac9cd0c5616dc180e1c1c01.png" alt="" /></div>
<h4><a name="tech">1.2 Technology </a></h4>
<p>We are here using Nginx webserver as http load balanced Proxy. It is the most  popular proxy application and around 6% of high traffic websites in this world  usin nginx. Some example sites using nginx are <a href="http://wordpress.com/">wordpress.com</a> ,<a href="http://www.rambler.ru/">rambler.ru</a>,<a href="http://blog.fastmail.fm/2007/01/04/webimappop-frontend-proxies-changed-to-nginx/">fastmail.fm</a></p>
<p>Behind these proxies we use lighttpd as webservers for hosting our  application. Lighttpd is a fast webserver with light foot print. It can simply  handle millions of requests without increasing server load.It is designed and  optimized for high performance environments. With a small memory footprint  compared to other web-servers, effective management of the cpu-load, and  advanced feature set (FastCGI, SCGI, Auth, Output-Compression, URL-Rewriting and  many more) lighttpd is the perfect solution for every server that is suffering  load problems.</p>
<h3><a name="requirements">2. System Requirements</a></h3>
<p>Here we using the best webservers and proxy applications available on  industry. It is fully a service based cluster. So no worry about kernel panics  and OS corruptions. Also if you have a private LAN across these nodes, it is  good to configure it otherwise you need to proxify the access over internet.</p>
<h4><a name="lbn">2.1 Load Balancer Node</a></h4>
<p>This node is your public node,, That means your Openx/website domain is  pointing to this server IP. I recommend to install ubuntu server Operating  system/ Centos for your load balanced server. Here in this article I am  mentioning the procedure based on ubuntu.</p>
<h4><a name="wsn">2.2 Web Servers Node</a></h4>
<p>You may need a minimum of two webservers or multiple of 2, beacuse I am  configuring GlusterFS between these webservers for file sharing. GlusterFS is  one of the top cluster file system which is built on ext3. With 4 webservers you  can configure a RAID10 like GlusterFs file system. That mean your cluster will  work if 50% of node go down. It have automatic mirroring and scaling capacity.  So there is no need to sync your website / openx contents regularly.</p>
<p>You can chose centos/ubuntu Os as operating system in webserver nodes. If you  going to install cPanel then you can only use apache as webservers. Also  remember the webservers must need same type of hardware configurations.</p>
<h4><a name="sr">2.3 Database Server Node</a></h4>
<p>As it is a single cluster we only use one database sever for Mysql. I  recommend to use a bigger configuration of for this server as follows,</p>
<ul>
<li>Processor -Dual Quad core AMD/ Xeon</li>
<li>RAM &#8211; 12 GB</li>
<li>HDD &#8211; SAS RAID 10</li>
</ul>
<p>Again Use Centos as operating system in this  server</p>
<h3><a name="ho">3. Install and Configure Load Balancer</a></h3>
<p>Please see the picture , the top one is load balance. Let us use the same IP  as in this example. Download the latest stable version of Nginx from <a href="http://nginx.net/">here</a> .I used nginx-0.7.62.tar.gz . Please proceed  as follows.</p>
<pre>
# wget -c http://sysoev.ru/nginx/nginx-0.7.62.tar.gz
# tar -xzf nginx-0.7.62.tar.gz
# cd nginx-0.7.62/
# ./configure --prefix=/opt/nginx
# make
# make install
</pre>
<p>Please resolve the dependencies before make.</p>
<p>Now we installed Nginx here. It is a best webserver eventhough we can use it  as load balanced proxy. The Nginx configuration file is  /opt/nginx/conf/nginx.conf . Add the following contents to  /opt/nginx/conf/nginx.conf</p>
<pre>
user  nobody;
worker_processes  5;

error_log  logs/error.log;
pid        logs/nginx.pid;

events {
    worker_connections  4096;
}

http {
    include     mime.types;
    default_type  application/octet-stream;

    log_format  main  '$remote_addr - $remote_user [$time_local] "$request" '
                      '$status $body_bytes_sent "$http_referer" '
                      '"$http_user_agent" "$http_x_forwarded_for"';

    access_log  logs/access.log  main;

    sendfile        on;
    tcp_nopush     on;
    keepalive_timeout  65;

    #gzip  on;

        upstream my_openx_site {
        server 10.0.0.11:80 weight=5;  # this is your webserver www1
        server 10.0.0.12:80 weight=5;  # this is your web server www2
        }

        server {
                 listen 80;
                server_name localhost;
                location / {
                         proxy_pass http://my_openx_site;
                }
        }

}
</pre>
<p>The above configuration have 5 worker processor and can handle 4096 requests  per second. If you need more connections increase the limits.<br />
Now add a user  and group</p>
<pre>
# useradd nobody
# groupadd nobody
</pre>
<p>Now give suitable permission for log folders.</p>
<pre>
# chown -R nobody.nobody  /opt/nginx/logs/
</pre>
<p>Now we need to create a  startup script. I have done some modification for the initscript as follows.  Remember this is for ubuntu. Please copy the following contents to  /etc/init.d/nginx</p>
<pre>
#! /bin/sh
### BEGIN INIT INFO
# Provides:          nginx
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: nginx init.d script for Ubuntu 8.10 and lesser versions.
# Description:       nginx init.d script for Ubuntu 8.10 and lesser versions.
### END INIT INFO
#------------------------------------------------------------------------------
# nginx - this script, which starts and stops the nginx daemon for ubuntu.
#
# description:  Nginx is an HTTP(S) server, HTTP(S) reverse \
#               proxy and IMAP/POP3 proxy server.  This \
#               script will manage the initiation of the \
#               server and its process state.
#
# processname: nginx
# config:      /opt/nginx/conf/nginx.conf
# pidfile:     /opt/nginx/logs/nginx.pid
# Provides:    nginx
#                                                                                                                                                                                                                                 

# Notes: nginx init.d script for Ubuntu 8.10 and lesser versions.
 Functions
#------------------------------------------------------------------------------
. /lib/lsb/init-functions                                                                                                                                                                                                         

#------------------------------------------------------------------------------
#                               Consts
#------------------------------------------------------------------------------
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/opt/nginx/sbin/nginx                                                                                                                                                                                                      

NAME=nginx
DESCRIPTION="Nginx Server..."                                                                                                                                                                                                     

PIDSPATH=/opt/nginx/logs
PS=$NAME                                #the process, which happens to be the NAME
PIDFILE=$NAME.pid                       #pid file
RUNAS=root                              #user to run as                                                                                                                                                                           

SCRIPT_OK=0                             #ala error codes
SCRIPT_ERROR=1                          #ala error codes
TRUE=1                                  #boolean
FALSE=0                                 #boolean                                                                                                                                                                                  

lockfile=/var/lock/subsys/nginx
NGINX_CONF_FILE="/opt/nginx/conf/nginx.conf"                                                                                                                                                                                      

#------------------------------------------------------------------------------
#                               Simple Tests
#------------------------------------------------------------------------------                                                                                                                                                   

#test if nginx is a file and executable
test -x $DAEMON || exit 0                                                                                                                                                                                                         

# Include nginx defaults if available
if [ -f /etc/default/nginx ] ; then
        . /etc/default/nginx
fi                                                                                                                                                                                                                                

#set exit condition
#set -e                                                                                                                                                                                                                           

#------------------------------------------------------------------------------
#                               Functions
#------------------------------------------------------------------------------                                                                                                                                                   

configtest() {
        $DAEMON -t -c $NGINX_CONF_FILE
}                                                                                                                                                                                                                                 

getPSCount() {
        return `pgrep -f $PS | wc -l`
}                                                                                                                                                                                                                                 

isRunning(){
        pidof_daemon
        PID=$?                                                                                                                                                                                                                    

        if [ $PID -gt 0 ]; then
                return 1
        else
                return 0
        fi
}                                                                                                                                                                                                                                 

status(){
        isRunning
        isAlive=$?                                                                                                                                                                                                                

        if [ "${isAlive}" -eq $TRUE ]; then
                echo "$NAME found running with processes:  `pidof $PS`"
        else
                echo "$NAME is NOT running."
        fi                                                                                                                                                                                                                        

}                                                                                                                                                                                                                                 

removePIDFile(){
        if [ -f $PIDSPATH/$NAME.pid ]; then
                rm $PIDSPATH/$NAME.pid
        fi
}                                                                                                                                                                                                                                 

start() {
        log_daemon_msg "Starting $DESCRIPTION"                                                                                                                                                                                    

        isRunning
        isAlive=$?                                                                                                                                                                                                                

        if [ "${isAlive}" -eq $TRUE ]; then
                log_end_msg $SCRIPT_ERROR
        else
                start-stop-daemon --start --quiet --chuid $RUNAS --pidfile $PIDSPATH/$PIDFILE --exec $DAEMON
                chmod 400 $PIDSPATH/$PIDFILE
                log_end_msg $SCRIPT_OK
        fi
}                                                                                                                                                                                                                                 

stop() {
        log_daemon_msg "Stopping $DESCRIPTION"                                                                                                                                                                                    

        isRunning
        isAlive=$?
        if [ "${isAlive}" -eq $TRUE ]; then
                start-stop-daemon --stop --quiet --pidfile $PIDSPATH/$PIDFILE                                                                                                                                                     

                removePIDFile                                                                                                                                                                                                     

                log_end_msg $SCRIPT_OK
        else
                log_end_msg $SCRIPT_ERROR
        fi
}                                                                                                                                                                                                                                 

reload() {
        configtest || return $?                                                                                                                                                                                                   

        log_daemon_msg "Reloading (via HUP) $DESCRIPTION"                                                                                                                                                                         

        isRunning
        if [ $? -eq $TRUE ]; then
                `killall -HUP $PS` #to be safe                                                                                                                                                                                    

                log_end_msg $SCRIPT_OK
        else
                log_end_msg $SCRIPT_ERROR
        fi
}                                                                                                                                                                                                                                 

terminate() {
        log_daemon_msg "Force terminating (via KILL) $DESCRIPTION"                                                                                                                                                                

        PIDS=`pidof $PS` || true                                                                                                                                                                                                  

        [ -e $PIDSPATH/$PIDFILE ] &amp;&amp; PIDS2=`cat $PIDSPATH/$PIDFILE`                                                                                                                                                               

        for i in $PIDS; do
                if [ "$i" = "$PIDS2" ]; then
                        kill $i
                        removePIDFile
                fi
        done                                                                                                                                                                                                                      

        log_end_msg $SCRIPT_OK                                                                                                                                                                                                    

}

pidof_daemon() {
    PIDS=`pidof $PS` || true

    [ -e $PIDSPATH/$PIDFILE ] &amp;&amp; PIDS2=`cat $PIDSPATH/$PIDFILE`

    for i in $PIDS; do
        if [ "$i" = "$PIDS2" ]; then
            return 1
        fi
    done
    return 0
}

case "$1" in
  start)
        start
        ;;
  stop)
        stop
        ;;
  restart|force-reload)
        stop
        start
        ;;
  reload)
        $1
        ;;
  status)
        status
        ;;
  configtest)
        $1
        ;;
  terminate)
        $1
        ;;
  *)
        FULLPATH=/etc/init.d/$NAME
        echo "Usage: $FULLPATH {start|stop|restart|force-reload|status|configtest|terminate}"
        exit 1
        ;;
esac

exit 0
</pre>
<p>Now give execute permission to this script</p>
<pre>
# chmod 755 /etc/init.d/nginx
</pre>
<p>This is all about Load balancer configuration. You can start the Load  balance, before that you may need to build your webservers as described below,</p>
<h3><a name="ossh">4. Install and Configure Webserver</a></h3>
<p>Now we need to configure our web servers. All request came to Load balancer  will be passed to your webserver. You can use lighttpd or apache2.2.x as  webserver . I recommend to you lighttpd as webserver , because it can handle  very high traffic websites with zero load. Before that we are going to configure  gluster fs file system among the webserver. These file system is very scalable  and high available.</p>
<h4><a name="upr">4.1 File system configuration</a></h4>
<p>If you don&#8217;t need a common file system, please skip this step.Let us use the  minimal number of webservers for Glusterfs. If you have 4 webservers, it is easy  to setup a RAID10 model cluster file system. Here we use two  servers.<br />
Download the latest stable version of glusterfs from  http://www.gluster.com/ . I here used version glusterfs-2.0.2</p>
<pre>
# tar -xzf 	 glusterfs-2.0.2.tar.gz
# cd 	glusterfs-2.0.2/
# ./configure
# make
# make install
</pre>
<p>Now create the configuration files as follows.</p>
<pre>
# mkdir /etc/glusterfs/
# touch /etc/glusterfs/glusterfsd.vol
</pre>
<p>The server itself can act as server and client . The GFS server configuration  is /etc/glusterfs/glusterfsd.vol . Now add the following contents to this file.</p>
<pre>
# file: /etc/glusterfs/glusterfsd.vol
volume posix
  type storage/posix
  option directory /data    # this partition is sharing
end-volume

volume locks
  type features/locks
  subvolumes posix
end-volume

volume brick
  type performance/io-threads
  option thread-count 8
  subvolumes locks
end-volume

volume server
  type protocol/server
  option transport-type tcp
  option auth.addr.brick.allow *
  subvolumes brick
end-volume
</pre>
<p>Now create the GlusterFS client configuration file  /etc/glusterfs/glusterfs-client.vol as follows</p>
<pre>
# file  /etc/glusterfs/glusterfs-client.vol
volume remote1
  type protocol/client
  option transport-type tcp
  option remote-host 10.0.0.11
  option remote-subvolume brick
end-volume
volume remote2
  type protocol/client
  option transport-type tcp
  option remote-host 10.0.0.12
  option remote-subvolume brick
end-volume
volume distribute
  type cluster/distribute
  subvolumes remote1 remote2
end-volume
volume writebehind
  type performance/write-behind
  option window-size 1MB
  subvolumes distribute
end-volume
volume cache
  type performance/io-cache
  option cache-size 512MB
 subvolumes writebehind
end-volum
</pre>
<p>So now we have both client and server configuration for the Glusterfs file  system. Here the /data partition is sharing around the webservers. You may need  to create same configuration in all webservers.<br />
Now start the glusterfs  server</p>
<pre>
# /etc/init.d/glusterfsd  start
</pre>
<p>Now mount the file system to /home  as follows</p>
<pre>
# glusterfs -f /etc/glusterfs/glusterfs-client.vol /home
</pre>
<p>Add the above line to rc.local file so during reboot your file system  will mount automatically. So now we have a common files system among the  webserver nodes.</p>
<h4><a name="usr">4.2 Lighttpd installation</a></h4>
<p>Please note either you install lighttpd as webserver or use apache. If you  going to chose apache please jump to next step.<br />
Download the lighty from  http://www.lighttpd.net/download I used the latest version.</p>
<pre>
# wget -c http://www.lighttpd.net/download/lighttpd-1.4.23.tar.gz
# tar -xzf lighttpd-1.4.23.tar.gz
# cd lighttpd-1.4.23/
# ./configure --prefix=/opt/lighttpd --enable-fastcgi  --with-openssl
# make
# make install
# mkdir -p /etc/lighttpd/
# cp doc/lighttpd.conf  /etc/lighttpd/
# cp doc/rc.lighttpd.redhat  /etc/init.d/lighttpd
# chmod 755  /etc/init.d/lighttpd
</pre>
<p>Now edit the init script /etc/init.d/lighttpd and update the following line  as given below,</p>
<pre>
lighttpd="/opt/lighttpd/sbin/lighttpd"
</pre>
<p>ow we need to configure lighttpd with php. Please install php as fcgi  module. It is easy<br />
Download the latest stable php from http://php.net/ and  extract it. Now build it as follows,</p>
<pre>
# /configure --prefix=/usr/local/php5/  \
	--with-config-file-path=/usr/local/php5/etc \
	 --enable-force-cgi-redirect --enable-fastcgi\
	--with-gd --with-jpeg-dir=/usr/local --with-zlib \
	--with-openssl  --with-mysql
# make
# make install
# cp php.ini-dist  /usr/local/php5/etc/php.ini
</pre>
<p>Now edit /etc/lighttpd/lighttpd.conf as follows.</p>
<pre>
server.modules              = (
                               "mod_access",
                               "mod_fastcgi",
                               "mod_proxy",
                               "mod_scgi",
                               "mod_simple_vhost",
                               "mod_evhost",
                               "mod_accesslog" ) 

server.document-root        = "/home/openx/public_html"
server.errorlog             = "/var/log/lighttpd/error.log"
index-file.names            = ( "index.php", "index.html",
                               "index.htm", "default.htm" )
mimetype.assign             = (
  ".pdf"          =&gt;      "application/pdf",
  ".sig"          =&gt;      "application/pgp-signature",
  ".spl"          =&gt;      "application/futuresplash",
  ".class"        =&gt;      "application/octet-stream",
  ".ps"           =&gt;      "application/postscript",
  ".torrent"      =&gt;      "application/x-bittorrent",
  ".dvi"          =&gt;      "application/x-dvi",
  ".gz"           =&gt;      "application/x-gzip",
  ".pac"          =&gt;      "application/x-ns-proxy-autoconfig",
  ".swf"          =&gt;      "application/x-shockwave-flash",
  ".tar.gz"       =&gt;      "application/x-tgz",
  ".tgz"          =&gt;      "application/x-tgz",
  ".tar"          =&gt;      "application/x-tar",
  ".zip"          =&gt;      "application/zip",
  ".mp3"          =&gt;      "audio/mpeg",
  ".m3u"          =&gt;      "audio/x-mpegurl",
  ".wma"          =&gt;      "audio/x-ms-wma",
  ".wax"          =&gt;      "audio/x-ms-wax",
  ".ogg"          =&gt;      "application/ogg",
  ".wav"          =&gt;      "audio/x-wav",
  ".gif"          =&gt;      "image/gif",
  ".jar"          =&gt;      "application/x-java-archive",
  ".jpg"          =&gt;      "image/jpeg",
  ".jpeg"         =&gt;      "image/jpeg",
  ".png"          =&gt;      "image/png",
  ".xbm"          =&gt;      "image/x-xbitmap",
  ".xpm"          =&gt;      "image/x-xpixmap",
  ".xwd"          =&gt;      "image/x-xwindowdump",
  ".css"          =&gt;      "text/css",
  ".html"         =&gt;      "text/html",
  ".htm"          =&gt;      "text/html",
  ".js"           =&gt;      "text/javascript",
  ".asc"          =&gt;      "text/plain",
  ".c"            =&gt;      "text/plain",
  ".cpp"          =&gt;      "text/plain",
  ".log"          =&gt;      "text/plain",
  ".conf"         =&gt;      "text/plain",
  ".text"         =&gt;      "text/plain",
  ".txt"          =&gt;      "text/plain",
  ".dtd"          =&gt;      "text/xml",
  ".xml"          =&gt;      "text/xml",
  ".mpeg"         =&gt;      "video/mpeg",
  ".mpg"          =&gt;      "video/mpeg",
  ".mov"          =&gt;      "video/quicktime",
  ".qt"           =&gt;      "video/quicktime",
  ".avi"          =&gt;      "video/x-msvideo",
  ".asf"          =&gt;      "video/x-ms-asf",
  ".asx"          =&gt;      "video/x-ms-asf",
  ".wmv"          =&gt;      "video/x-ms-wmv",
  ".bz2"          =&gt;      "application/x-bzip",
  ".tbz"          =&gt;      "application/x-bzip-compressed-tar",
  ".tar.bz2"      =&gt;      "application/x-bzip-compressed-tar",
  ""              =&gt;      "application/octet-stream",
 )                                                            

accesslog.filename          = "/var/log/lighttpd/access.log"
url.access-deny             = ( "~", ".inc" )
$HTTP["url"] =~ "\.pdf$" {
  server.range-requests = "disable"
}
static-file.exclude-extensions = ( ".php", ".pl", ".fcgi" )
fastcgi.server = ( ".php" =&gt; ((
                     "bin-path" =&gt; "/usr/local/php5/bin/php",
                     "socket" =&gt; "/tmp/php.socket",
                     "max-procs" =&gt; 2,
                     "bin-environment" =&gt; (
                       "PHP_FCGI_CHILDREN" =&gt; "16",
                       "PHP_FCGI_MAX_REQUESTS" =&gt; "10000"
                     ),
                     "bin-copy-environment" =&gt; (
                       "PATH", "SHELL", "USER"
                     ),
                     "broken-scriptfilename" =&gt; "enable"
                 )))
</pre>
<p>So the above configuration will handle 10000 requests per children per  second. You can adjust the factcgi.server options as you wish. Remember it is  good all your webservers have same type configuration.</p>
<h4><a name="sc">4.3 Apache installation</a></h4>
<p>if you have cpanel or you are going to use apache2.2.x as webserver, please  read my previous article to know how to configure it. <a href="http://sherin.co.in/openxhandbook/">Openx Hand Book</a></p>
<h3><a name="dbserver">5. Install and Configure Database Server</a></h3>
<p>Now you can install your mysql server and configure it.</p>
<pre>
# yum install mysql-server -y
</pre>
<p>Edit the my.cnf as follows(Remember it depend on your hardware )</p>
<pre>
[mysqld]
safe-show-database
old-passwords = 1
max_connections =2048
max_user_connections = 1024
key_buffer_size = 2048M
myisam_sort_buffer_size = 64M
join_buffer_size = 1M
read_buffer_size = 1M
sort_buffer_size = 2M
table_cache = 4000
thread_cache_size = 384
wait_timeout = 20
connect_timeout = 10
tmp_table_size = 2048M
max_heap_table_size = 512M
max_allowed_packet = 64M
net_buffer_length = 16384
max_connect_errors = 10
thread_concurrency = 16
concurrent_insert = 2
table_lock_wait_timeout = 30
read_rnd_buffer_size = 786432
bulk_insert_buffer_size = 8M
query_cache_limit = 7M
query_cache_size = 64M
query_cache_type = 1
query_prealloc_size = 262144
query_alloc_block_size = 65536
transaction_alloc_block_size = 8192
transaction_prealloc_size = 4096
max_write_lock_count = 16
long_query_time = 5
skip-name-resolve
skip-locking

[mysqld_safe]
open_files_limit = 8192

[mysqldump]
quick
max_allowed_packet = 16M

[myisamchk]
key_buffer = 384M
sort_buffer = 384M
read_buffer = 256M
write_buffer = 256M
</pre>
<p>Now restart mysql server and create a database as follows</p>
<pre>
# mysqladmin create openx_db
</pre>
<p>Now go to mysql command prompt and create a user and password as  follows</p>
<pre>
#mysql&gt;grant all privileges on openx_db.* to 'openx_user'@'%' identified by 'VERYSTRONGPASSWORD';
</pre>
<p>So now for your openx configuration use host as your mysql serve  IP(here 10.0.0.20) and database user and password same as above.</p>
<h3><a name="optimization">6. Optimization</a></h3>
<p>Now it is time to optimize your servers. Please read my <a href="http://www.sherin.co.in/openxhandboook/">Openx Handbook </a>for  optimizations ,</p>
<h3><a name="author">Appendix-A About The Author</a></h3>
<p>My Name : Sherin A<br />
My Web Site : <a href="http://www.sherin.co.in/">http://www.sherin.co.in/</a> If you wan&#8217;t my  designation , you can call me, System Engineer , Security Expert , Software  Engineer or a FOSS member.<br />
About me :<br />
1) Founder of vcPanel ( Virtual  Private Server Control panel )<br />
2) Founder of FOSS award winner project  ffmpegistaller )<br />
3) Founder of FossBlog ( A Free and Open Source Software  Blog<br />
My relation with Adds : I am here with adds since 2003. Now providing  Openx services for companies US , Canad, UK, Australia, Japan , India ,Germany,  Croatia and Russia. Contact Me : All my contacts are available here or send  email to me sherinmon[at]gmail[dot]com</p>
<h3><a name="#license">Appendix-B License</a></h3>
<p>This article is licensed under Creative Commons Attribution-Noncommercial 2.5  India It means you can share and redistribute it , but give a link back to this  original document, because sometimes I will add more tips to this document.</p>
]]></content:encoded>
			<wfw:commentRss>http://openxchina.org/archives/368/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://openxchina.org/archives/368</feedburner:origLink></item>
		<item>
		<title>OpenX V2.8.3发布</title>
		<link>http://feedproxy.google.com/~r/openxchina/~3/GN-4WIVecXo/353</link>
		<comments>http://openxchina.org/archives/353#comments</comments>
		<pubDate>Mon, 11 Jan 2010 04:46:54 +0000</pubDate>
		<dc:creator>pinson</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[OpenX]]></category>
		<category><![CDATA[下载]]></category>

		<guid isPermaLink="false">http://openxchina.org/?p=353</guid>
		<description><![CDATA[此文英文原文地址：http://www.openx.org/docs/2.8/release-notes/openx-2.8.3
广告投放引擎升级 &#8211; 在OpenX2.8.3版本，针对投放引擎做了一系列的修改保证跨合同广告计划的广告能够被合理的分配投放。以上修改能够降低少投和多投的概率。针对维护程序以及投放有了一些重大的改变。
针对竞价的广告计划 &#8211; 在OpenX 2.8.3以前的版本，一旦某个竞价广告计划在一个页面上投放中间的一个广告，系统回阻止任何其他的广告计划在此页面上投放，除非该竞价广告能够投满该页面上的所有广告位。在OpenX 2.8.3，已经修复了上面的状况，所以如果一个页面上竞价广告计划无法完全投放，系统将投放其他的广告计划（避免出现空白广告）。
安全更新 - 在OpenX 2.8.3里完善了一些关键的安全更新以降低软件中存在的潜在风险。
解决了一些小问题：邮件广告位、性能、用户界面等。
去除了让任何人作为管理员登录的入口
更详细的信息，请参见：https://developer.openx.org/jira/browse/OX/fixforversion/10910.
]]></description>
			<content:encoded><![CDATA[<p>此文英文原文地址：<a href="http://www.openx.org/docs/2.8/release-notes/<a href="http://openxchina.org" class="kblinker" title="More about openx &raquo;">openx</a>-2.8.3#new">http://www.openx.org/docs/2.8/release-notes/openx-2.8.3</a></p>
<a href="http://openxchina.org/downloads/11" title="Downloaded 109 times">Openx V2.8.3</a> - Openx下载 - (2010-01-11)<br><strong><a href="http://openxchina.org/downloads/11" title="Downloaded 109 times">马上下载</a></strong>
<p>广告投放引擎升级 &#8211; 在OpenX2.8.3版本，针对投放引擎做了一系列的修改保证跨合同广告计划的广告能够被合理的分配投放。以上修改能够降低少投和多投的概率。针对维护程序以及投放有了一些重大的改变。</p>
<p>针对竞价的广告计划 &#8211; 在OpenX 2.8.3以前的版本，一旦某个竞价广告计划在一个页面上投放中间的一个广告，系统回阻止任何其他的广告计划在此页面上投放，除非该竞价广告能够投满该页面上的所有广告位。在OpenX 2.8.3，已经修复了上面的状况，所以如果一个页面上竞价广告计划无法完全投放，系统将投放其他的广告计划（避免出现空白广告）。</p>
<p>安全更新 - 在OpenX 2.8.3里完善了一些关键的安全更新以降低软件中存在的潜在风险。</p>
<p>解决了一些小问题：邮件广告位、性能、用户界面等。</p>
<p>去除了让任何人作为管理员登录的入口</p>
<p>更详细的信息，请参见：<a title="https://developer.openx.org/jira/browse/OX/fixforversion/10910" href="https://developer.openx.org/jira/browse/OX/fixforversion/10910">https://developer.openx.org/jira/browse/OX/fixforversion/10910</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://openxchina.org/archives/353/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://openxchina.org/archives/353</feedburner:origLink></item>
		<item>
		<title>OpenX上如何安装插件？</title>
		<link>http://feedproxy.google.com/~r/openxchina/~3/Q2v6W2n73CM/339</link>
		<comments>http://openxchina.org/archives/339#comments</comments>
		<pubDate>Thu, 31 Dec 2009 08:12:32 +0000</pubDate>
		<dc:creator>pinson</dc:creator>
				<category><![CDATA[应用技巧]]></category>
		<category><![CDATA[模块&插件]]></category>

		<guid isPermaLink="false">http://openxchina.org/?p=339</guid>
		<description><![CDATA[英文原文地址：http://www.adserverplugins.com/openx/how-to-install-a-plugin-in-openx-ad-server/
在OpenX服务器上安装插件非常简单，只需要按照下面的步骤进行。
系统需求

独立的OpenX广告服务器安装。OpenX主机版本不能添加插件。
OpenX 2.8版本之后才可以添加插件，之前的版本不支持插件。
在安装新插件或更新插件之前您需要以系统管理员身份登录。只有管理员才有权限管理插件。

安装新插件步骤
要在OpenX服务器上安装新插件，先检查下系统需求是否满足，然后按照以下步骤进行：

使用管理员帐号信息登录。
确认您是在使用管理员帐号。如果不是，在右上方有一个选择下拉，选择“使用管理员账户”。
在Logo的下方，您将会看到有两个新的标签出现，“配置”和“插件”。
点击“插件”标签查看所有已经安装的插件清单。
在“安装新插件”下方，点击“浏览&#8230;”按钮，选择您准备安装的插件文件。
找到您选择的文件后，您将会被带往插件界面。
点击“安装”按钮。
系统将会检查并安装新的插件。安装过程一般只需几秒钟。有些插件可能需要在数据库里创建单独的表，如果那样的话，可能安装时间会稍微长一点，取决于创建表的数目。
一旦插件安装完毕，界面将会刷新，您可以看到新的插件显示在插件清单中。

更新插件步骤
如果您收到了已经安装好的插件的更新版本，下面将说明更新的步骤：

使用管理员帐号信息登录。
确认您是在使用管理员帐号。如果不是，在右上方有一个选择下拉，选择“使用管理员账户”。
在Logo的下方，您将会看到有两个新的标签出现，“配置”和“插件”。
点击“插件”标签查看所有已经安装的插件清单。
点击您需要更新的插件旁边的“详情”链接。
系统将会显示您选择的插件的详情页面，包括版本号、创建日期和作者的相关信息。
在“更新插件”下方，点击“浏览&#8230;”按钮，选择您准备更新的插件文件。
一旦您找到并选择相应的文件后，点击“更新”按钮。
系统将会自动更新插件，也包括对上传文件的检查。安装持续时间一般只需要几秒，长短取决于更新量的大小。
更新完成后，在界面上将会显示新版的详情信息。

作者注：根据实际安装插件的经验，切记不要修改下载的安装包名，上传安装包的时候，OpenX会自动检查安装包是否可用，中间会用到安装包名，笔者之前就曾因为修改了安装包名而无法安装插件的经历。
]]></description>
			<content:encoded><![CDATA[<p>英文原文地址：<a href="http://www.adserverplugins.com/openx/how-to-install-a-plugin-in-openx-ad-server/">http://www.adserverplugins.com/openx/how-to-install-a-plugin-in-openx-ad-server/</a></p>
<p>在OpenX服务器上安装插件非常简单，只需要按照下面的步骤进行。</p>
<h2>系统需求</h2>
<ul>
<li>独立的OpenX广告服务器安装。OpenX主机版本不能添加插件。</li>
<li><a href="http://openxchina.org" class="kblinker" title="More about openx &raquo;">OpenX</a> 2.8版本之后才可以添加插件，之前的版本不支持插件。</li>
<li>在安装新插件或更新插件之前您需要以系统管理员身份登录。只有管理员才有权限管理插件。</li>
</ul>
<h2>安装新插件步骤</h2>
<p>要在OpenX服务器上安装新插件，先检查下系统需求是否满足，然后按照以下步骤进行：</p>
<ol>
<li>使用管理员帐号信息登录。</li>
<li>确认您是在使用管理员帐号。如果不是，在右上方有一个选择下拉，选择“使用管理员账户”。</li>
<li>在Logo的下方，您将会看到有两个新的标签出现，“配置”和“插件”。</li>
<li>点击“插件”标签查看所有已经安装的插件清单。</li>
<li>在“安装新插件”下方，点击“浏览&#8230;”按钮，选择您准备安装的插件文件。</li>
<li>找到您选择的文件后，您将会被带往插件界面。</li>
<li>点击“安装”按钮。</li>
<li>系统将会检查并安装新的插件。安装过程一般只需几秒钟。有些插件可能需要在数据库里创建单独的表，如果那样的话，可能安装时间会稍微长一点，取决于创建表的数目。</li>
<li>一旦插件安装完毕，界面将会刷新，您可以看到新的插件显示在插件清单中。</li>
</ol>
<h2>更新插件步骤</h2>
<p>如果您收到了已经安装好的插件的更新版本，下面将说明更新的步骤：</p>
<ol>
<li>使用管理员帐号信息登录。</li>
<li>确认您是在使用管理员帐号。如果不是，在右上方有一个选择下拉，选择“使用管理员账户”。</li>
<li>在Logo的下方，您将会看到有两个新的标签出现，“配置”和“插件”。</li>
<li>点击“插件”标签查看所有已经安装的插件清单。</li>
<li>点击您需要更新的插件旁边的“详情”链接。</li>
<li>系统将会显示您选择的插件的详情页面，包括版本号、创建日期和作者的相关信息。</li>
<li>在“更新插件”下方，点击“浏览&#8230;”按钮，选择您准备更新的插件文件。</li>
<li>一旦您找到并选择相应的文件后，点击“更新”按钮。</li>
<li>系统将会自动更新插件，也包括对上传文件的检查。安装持续时间一般只需要几秒，长短取决于更新量的大小。</li>
<li>更新完成后，在界面上将会显示新版的详情信息。</li>
</ol>
<p>作者注：根据实际安装插件的经验，切记不要修改下载的安装包名，上传安装包的时候，OpenX会自动检查安装包是否可用，中间会用到安装包名，笔者之前就曾因为修改了安装包名而无法安装插件的经历。</p>
]]></content:encoded>
			<wfw:commentRss>http://openxchina.org/archives/339/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://openxchina.org/archives/339</feedburner:origLink></item>
		<item>
		<title>图形化统计报表插件更新</title>
		<link>http://feedproxy.google.com/~r/openxchina/~3/5fmvU0SKf18/336</link>
		<comments>http://openxchina.org/archives/336#comments</comments>
		<pubDate>Thu, 31 Dec 2009 07:50:42 +0000</pubDate>
		<dc:creator>pinson</dc:creator>
				<category><![CDATA[模块&插件]]></category>
		<category><![CDATA[图表]]></category>
		<category><![CDATA[报表]]></category>
		<category><![CDATA[插件]]></category>

		<guid isPermaLink="false">http://openxchina.org/?p=336</guid>
		<description><![CDATA[英文原文地址：http://www.adserverplugins.com/blog/2009/12/openx-statistics-as-graphs-plugin-updated/
新功能
在Beta版本中只提供全局历史表图形化的基础上，新版可以针对OpenX几乎所有的统计图形化：

广告主
广告项目
广告创意
网站
广告位

图表在所有用户类型下均有效（管理员、客户经理、广告主、媒体所有者）
Every graph has buttons to navigate to the previous and next month, or to go up a level to show the current year’s statistics. Clicking a bar will drill down into the underlying statistics, down to a day graph with an hourly break down.
Graphs will show the actual numbers for every bar and dot by [...]]]></description>
			<content:encoded><![CDATA[<p>英文原文地址：<a href="http://www.adserverplugins.com/blog/2009/12/openx-statistics-as-graphs-plugin-updated/">http://www.adserverplugins.com/blog/2009/12/openx-statistics-as-graphs-plugin-updated/</a></p>
<h2>新功能</h2>
<p>在Beta版本中只提供全局历史表图形化的基础上，新版可以针对OpenX几乎所有的统计图形化：</p>
<ul>
<li>广告主</li>
<li>广告项目</li>
<li>广告创意</li>
<li>网站</li>
<li>广告位</li>
</ul>
<p>图表在所有用户类型下均有效（管理员、客户经理、广告主、媒体所有者）</p>
<p>Every graph has buttons to navigate to the previous and next month, or to go up a level to show the current year’s statistics. Clicking a bar will drill down into the underlying statistics, down to a day graph with an hourly break down.</p>
<p>Graphs will show the actual numbers for every bar and dot by positioning the mouse over them.</p>
<h2>Improvements</h2>
<p>The graphs are now displayed using the open source product “<a href="http://teethgrinder.co.uk/open-flash-chart-2/" target="_blank">Open Flash Chart 2</a>“, which comes bundled with the plugin. To speed up the display of the graphs, the initial time frame is always the current month.</p>
<a href="http://openxchina.org/downloads/10" title="Downloaded 63 times">图表式报告插件V1.0</a> - 统计报表图形化插件。安装时注意不要修改安装包的名称，OpenX会按照安装包的名称来检查安装包是否可用。 - (2009-12-31)<br><strong><a href="http://openxchina.org/downloads/10" title="Downloaded 63 times">马上下载</a></strong>
]]></content:encoded>
			<wfw:commentRss>http://openxchina.org/archives/336/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://openxchina.org/archives/336</feedburner:origLink></item>
		<item>
		<title>Openx用户权限</title>
		<link>http://feedproxy.google.com/~r/openxchina/~3/HP_3JM_zh-Q/259</link>
		<comments>http://openxchina.org/archives/259#comments</comments>
		<pubDate>Thu, 26 Nov 2009 06:31:40 +0000</pubDate>
		<dc:creator>Evan hu</dc:creator>
				<category><![CDATA[应用技巧]]></category>
		<category><![CDATA[权限]]></category>

		<guid isPermaLink="false">http://openxchina.org/?p=259</guid>
		<description><![CDATA[本人查看了openx网站帮助后总结了一个图，拿出来给大家分享一下，

Openx用户权限
管理理员
* 创建经理帐户
* 将用户添加到经理帐户
* 可以作为一个经理
* 创建其他管理员用户
* 查看主页和用户日志页
* 管理全球和维护设置
* 获得直接选择
Default manager  客户经理的权利
* 创建和管理广告商和网站
* 添加其他经理帐户
* 将用户添加到广告商和网站
* 查看主页和用户日志页
* 管理帐户偏好
* 进入渠道管理
网站的权利：
* 创建区
* 链接区
* 生成调用代码
* 其他用户连结此帐户
广告客户的权利：
* 查看活动
* 修改广告
* 激活运动
* 停用运动
* 其他用户连结此帐户
]]></description>
			<content:encoded><![CDATA[<p><strong>本人查看了openx网站帮助后总结了一个图，拿出来给大家分享一下，</strong></p>
<p><img class="alignnone size-full wp-image-274" src="http://openxchina.org/wp-content/uploads/2009/11/openx1.jpeg" alt="Openx用户权限" width="630" height="641" /></p>
<p>Openx用户权限<br />
管理理员<br />
* 创建经理帐户<br />
* 将用户添加到经理帐户<br />
* 可以作为一个经理<br />
* 创建其他管理员用户<br />
* 查看主页和用户日志页<br />
* 管理全球和维护设置<br />
* 获得直接选择<br />
Default manager  客户经理的权利<br />
* 创建和管理广告商和网站<br />
* 添加其他经理帐户<br />
* 将用户添加到广告商和网站<br />
* 查看主页和用户日志页<br />
* 管理帐户偏好<br />
* 进入渠道管理<br />
网站的权利：<br />
* 创建区<br />
* 链接区<br />
* 生成调用代码<br />
* 其他用户连结此帐户<br />
广告客户的权利：<br />
* 查看活动<br />
* 修改广告<br />
* 激活运动<br />
* 停用运动<br />
* 其他用户连结此帐户</p>
]]></content:encoded>
			<wfw:commentRss>http://openxchina.org/archives/259/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		<feedburner:origLink>http://openxchina.org/archives/259</feedburner:origLink></item>
		<item>
		<title>开放网站交流QQ群–OpenXChina</title>
		<link>http://feedproxy.google.com/~r/openxchina/~3/GC5YLchXHYw/166</link>
		<comments>http://openxchina.org/archives/166#comments</comments>
		<pubDate>Fri, 20 Nov 2009 05:52:17 +0000</pubDate>
		<dc:creator>pinson</dc:creator>
				<category><![CDATA[杂七杂八]]></category>
		<category><![CDATA[交流]]></category>

		<guid isPermaLink="false">http://openxchina.org/?p=166</guid>
		<description><![CDATA[很高兴看到有越来越多的朋友对OpenX开始感兴趣，网站的留言也慢慢多了起来，应留言朋友的需求，即日起正式开放网站交流QQ群，为大家即时交流OpenX相关的问题之用。欢迎大家加入！
网站交流QQ群号：10883470
注：为了保证交流群不被广告等不良信息打扰，交流群需要验证，请大家输入验证码：OPENXCHINA
再次感谢大家对本站的支持！OpenX，加油！
OpenX中文研究组织
]]></description>
			<content:encoded><![CDATA[<p>很高兴看到有越来越多的朋友对OpenX开始感兴趣，网站的留言也慢慢多了起来，应留言朋友的需求，即日起正式开放网站交流QQ群，为大家即时交流OpenX相关的问题之用。欢迎大家加入！</p>
<p>网站交流QQ群号：10883470</p>
<p>注：为了保证交流群不被广告等不良信息打扰，交流群需要验证，请大家输入验证码：OPENXCHINA</p>
<p>再次感谢大家对本站的支持！OpenX，加油！</p>
<p>OpenX中文研究组织</p>
]]></content:encoded>
			<wfw:commentRss>http://openxchina.org/archives/166/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://openxchina.org/archives/166</feedburner:origLink></item>
		<item>
		<title>【应用技巧】测试的时候调整缓存生效时间</title>
		<link>http://feedproxy.google.com/~r/openxchina/~3/CnfEeQ4e_ZI/162</link>
		<comments>http://openxchina.org/archives/162#comments</comments>
		<pubDate>Fri, 20 Nov 2009 04:59:15 +0000</pubDate>
		<dc:creator>pinson</dc:creator>
				<category><![CDATA[应用技巧]]></category>
		<category><![CDATA[性能]]></category>
		<category><![CDATA[测试]]></category>
		<category><![CDATA[缓存]]></category>

		<guid isPermaLink="false">http://openxchina.org/?p=162</guid>
		<description><![CDATA[英文原文地址：http://www.openxtips.com/2009/11/tip-36-change-the-banner-cache-value-when-testing/
在测试广告投放的时候，可以调整缓存时间为1秒，以让缓存失效，以便广告能够及时生效
如果您在调试广告投放，或者想试一试调整竞价模式以及广告显示设置的时候，降低广告缓存时间可以让您的设置能够更快的生效。当然，如果这种调整是在生产系统上进行的，则会影响到广告投放的性能。
]]></description>
			<content:encoded><![CDATA[<p>英文原文地址：<a href="http://www.openxtips.com/2009/11/tip-36-change-the-banner-cache-value-when-testing/">http://www.openxtips.com/2009/11/tip-36-change-the-banner-cache-value-when-testing/</a></p>
<p>在测试广告投放的时候，可以调整缓存时间为1秒，以让缓存失效，以便广告能够及时生效</p>
<p>如果您在调试广告投放，或者想试一试调整竞价模式以及广告显示设置的时候，降低广告缓存时间可以让您的设置能够更快的生效。当然，如果这种调整是在生产系统上进行的，则会影响到广告投放的性能。</p>
]]></content:encoded>
			<wfw:commentRss>http://openxchina.org/archives/162/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		<feedburner:origLink>http://openxchina.org/archives/162</feedburner:origLink></item>
	</channel>
</rss>
