Jump to content

Tim Vereecke

Approved members
  • Posts

    30
  • Joined

  • Last visited

Posts posted by Tim Vereecke

  1. hi Steve,

    When you test performance of asynchronous make sure to have ALL your zones using the asynchronous method.

    The reason is:

    • The asynchronous method sends the actual zone invocation request on DOMContentLoaded.
    • However the synchronous version delays this DOMContentLoaded event.

    This is also true when the async zone is before any sync zone (like seen in your screenshot) 

    For example if on your PRD site you would add a single zone using asynchronous it would for synchronous zones to load which delay the yellow line (=DOMContentLoaded)

    syncdelaysdcl.jpg

     

  2. On February 4th 2024 (Noon CET) I will present at FOSDEM 2024; the topic is about how I used Revive Adserver to improve privacy and Web Performance.

    Maybe I will see you in Brussels? Or if you are interested there is also a live stream

    Kind regards;

    Tim

    From Google AdSense to FOSS: Lightning-fast privacy-friendly banners

    I run [link removed], the largest and fastest scale modeling website in the world. As such, I need a fast and privacy-aware advertisement solution to best serve my user base.

    5 years ago, just before GDPR became applicable I decided to replace my existing Google AdSense solution. While easy to set up, AdSense and other vendors were in hindsight too slow or not meeting my privacy expectations.

    The cornerstone of the new architecture became the popular, free and open source (GNU GPL) Revive Adserver (formerly known as OpenX). Without leaking information, Revive Adserver allows me to serve targeted ads without degrading Largest Contentful Paint (LCP), Cumulative Layout Shift (CLS) or other Web Vitals.

    In this talk you will learn about my design choices as well as interesting techniques and best practices to serve and monitor banner ads performance.

    More info: 

    https://fosdem.org/2024/schedule/event/fosdem-2024-2266-from-google-adsense-to-foss-lightning-fast-privacy-friendly-banners/

  3. With the new Speculation rules API browsers can prerender pages. This can lead to ad impressions being requested and logged without users navigation to the page (and not seeing ads).

    I think it would make sense to delay the logging to be delayed till after the prerenderingchange event to:

    • Avoid views never seen
    • Avoid reduction of CTR 

    eg.

    if (document.prerendering) {
          document.addEventListener("prerenderingchange", doSomething, { once: true, });
    } else {
         doSomething();
    }

    Reference:

    https://developer.mozilla.org/en-US/docs/Web/API/Speculation_Rules_API

     

  4. Hi,

    Is there a banner type which supports executing PHP to render the banner HTML dynamically?

    Current state

    I currently have an HTML banner which populates dynamic data like below (4 dynamically picked products, with up to date pricing).

    The JS code to fetch and display the data runs client side. Although it works like a charm it does involve multiple requests.

    1236983-10000-53-1440.png?impolicy=defau

    Question for future state

    I would like to execute this logic server side and have Revive return the server side rendered HTML by executing PHP (read from database).

    Is it possible? And what is the best approach to do that? 

    I tried looking for an existing plugin and or forum post discussing this; but failed to find it?

     

    Thank you for your guidance!

    Tim

  5. Hi,

    What is the timeout for a session when doing delivery capping?

     

    Is it based on a session cookie? so it is reset when browser is closed?

    Is it similar to session timeout in Google Analytics? 30mins?

    Is it based on the SessionID which is 1 year?

     

    I checked the docs but can't find a clear answer. Thank you for confirming

    Tim

  6. Hi,

    I'm interested in overal statistics by campaign type. (eg. Remnant, contract, ...)

    I want to see Revenue/Clicks/Impressions for all my contract campaigns without the noise of remnant campaigns.

    I want to see the evolution of total remnant impressions compared to all impressions. 

    Is this possible today?

    Thank you.

    Tim

     

     

    My own reply:

    Sometimes you find the answer yourself the minute after posting the question. All my internal remnant campaigns belong to the same advertiser. As there are plenty of reports available by advertiser it is straight forward getting the info.

  7. Hi,

    Background:

    All the banners I server are either images or HTML and there is 0% chance I serve flash.

    While doing a performance review of my JS code I noted the standard Revive JS code (served via /asyncjs.php) contained a whole section of JS referencing ShockwaveFlash.ShockwaveFlash

    Checking the asyncjs.php source I see it includes a reference to a required flash config file (fl.js in the /www/delivery folder)

    require __DIR__.'/'.$GLOBALS['_MAX']['CONF']['file']['asyncjsjs'];
    require __DIR__.'/'.$GLOBALS['_MAX']['CONF']['file']['flash'];
    

    I currently commented out the inclusion of the fl.js so the JS is smaller. All seems to work fine.

    Results

    • asyncjs.php goes from 3.6KB to 2.0Kb when transferring over the wire (GZIP). (not massive, but with Chrome never slow mode, you only have a certain budget of JS available. Saving 1.6Kb here can help to stay under the 500kb limit)
    • 9883 bytes to 42993 bytes in unzipped format. (this is less JS code to parse/execute. Read The Cost Of JavaScript In 2018 for more details https://medium.com/@addyosmani/the-cost-of-javascript-in-2018-7d8950fbb5d4

     

    My 3 questions for the community are?

    • Do you know any side effects of removing the fl.js inclusion? 
    • Are there better options than commenting it out?
    • Are there other JS optimisations you are aware off?

    Thank you

    Tim

     

  8. Hi Andrew, sorry I really thought I replied. I went for the clean install approach and migrated all the key tables for inventory/advertisers.

    After doing that it was fine. (lessons learned for me = backing up the database and having a local copy of all the src files is not enough. eg. Config changes are not stored in the DB but in a config file. )

    My endusers are not impacted, I use the REST API for a fully custom UI and reporting connects to the old instance or the new instance depending on the date of the reports. (not ideal, but good enough for me at this point)

     

    Thank you for thinking with me

  9. Hi,

    I recovered from a severe hardware failure and restored from a backup. Since then I see a gap between actual impressions and what I expect.

    I checked this post but I'm still stuck https://documentation.revive-adserver.com/display/DOCS/No+Statistics

    • Ad delivery working fine: YES
    • All zones populating: YES
    • Remnant campaigns setup: YES
    • Seeing log beacons (lg.php): YES
    • Seeing data as expected in table rv_data_bkt_m: YES
    • Blocking IP/UA: NO
    • Maintenance mode running: YES
    • Maintenance mode updating stats: YES

     

    SQL query on rv_data_bkt_m

    interval_start Descending 1 sum(count)  
    2018-12-18 20:00:00 2536 = current hour, increasing fast
    2018-12-18 19:00:00 12685
    2018-12-18 18:00:00 11392
    2018-12-18 17:00:00 9866

    Matching Hourly stats under "Daily statistics" for above

    • not there yet (as expected)
    • 1105
    • 1046
    • 973

    So I see a factor of 10x lower in statistics;

    I checked certain zones/campaigns/banner types would not show up; But all seem to have the same 10x range lower than expected.

    Any hint pointers what this could be? (eg. timezone mismatch? PHP version, I'm now on 7.2 while before on 7.0)

    Thank you,

    Tim

     

  10. I have  multiple contract campaigns and 2 remnant campaigns targeting a specific zone. 

    The inventory is far from sold so I would expect all contract campaigns to reach their daily limit with easr.

    However when browsing the site I see a huge amount of remnant ads consuming 60% of the zone impressions while all the contract campaigns are under delivering. Even the ones set with a high priority.

    eg.

    - Contract Campaign with 1 banner: Target 3000, actual delivery 2200

    - Contract Campaign with 1 banner: Target 4000, actual delivery 3000

    What am I doing wrong?

     

     

    34,130
×
×
  • Create New...