The Goal
Don't do the cache-checking with PHP code.

The Solution
ErrorDocument 404 /generate-page.php
The Script
<?php
if (preg_match('^/article-(\d+).html$!', $_SERVER['REDIRECT_URI'], $m)) {
    ob_start();
    /* Do stuff to generate page */
    $data = ob_get_contents();
    ob_end_clean();

    echo $data;

    $fn = "article-$m[0].html.".getmypid();

    $fd = fopen($fn, "w") or exit;
    fputs($fd, $data);
    fclose($fd);

    rename($fn, "article-$m[0].html");
} else {
    header("HTTP/1.0 404 Not found");
    /* Generate 404 message here */
}
?>