我怎样才能编辑一个实时网页,而不会在编辑过程中给访问者造成混乱?


How can I edit a live webpage without causing chaos for the page's visitors during my editing session?

如果这些非常基本的问题已经问过和回答过很多次了,请原谅我,但是几个小时的搜索没有找到任何相关的东西。

(1)"上线"后对于一个网页,Stackoverflow开发人员希望对页面进行一些更改,但不希望这些更改"上线"。直到他完成了一个周期的原型和测试的变化(你知道,基本的SDLC)。他是如何在网站直播中做到这一点的?

(2)一个更基本的问题:当我花了,比如说,30分钟更新一个现有的,实时的网页,似乎任何访问者在这段时间内都会观察到每一个增量的变化(包括无意的错误,打字错误等),我正在做实时。我一定是遗漏了一些很明显的东西,所以请原谅我!我如何对当前的网页进行更改,而不会在编辑会话期间造成这样的混乱?

我看到这么多不好的评论和一个不好的回答。你从不在实时页面上工作。如果你把它弄坏了怎么办?你问这个问题的事实告诉我,你不够好,不会犯错误。

在我看来,只有一种好方法可以做到这一点。

创建子域名dev.whatever.com,并把你当前的网站放在那里。从你的本地项目开始,当你对结果感到满意时,然后把它转移到你的开发网站,以确保没有问题,先在那里做所有的事情,然后当你满意时,你就搬去生活。

为什么不直接用不同的文件名保存页面的副本呢?上传它并进行修改,直到它按照你想要的方式工作。没有人会知道这个页面的存在,除了你,所以没有人会看到任何问题。一旦你满意了,就使用页面代码。

我认为在本地存储库工作并学习版本控制是最好的。这样,万一你的代码被完全破坏了,你可以毫无顾虑地恢复到以前的工作版本。您还可以使用本地服务器,这样只有您可以看到代码正在进行的当前更新。一旦您对一切都感到满意并且所有代码都可以工作,那么您就可以将更改推送到远程服务器上。

版本控制:https://git-scm.com/

进一步说明我的评论,这里有一个简单的缓存页面脚本,它使用一个定义来允许页面在缓存模式或动态模式下运行。将CACHESITE切换为false以返回页面的实时呈现。如果您是管理员(或您决定的其他触发器),则需要扩展以绕过缓存,因此您可以看到正在进行的更改,但用户看到的是缓存页面:

<?php
    // If true, cache this page
    define("CACHESITE",true);
    function CachePage($content = '',$saveto = 'index.php')
        {
            ob_start();
            echo $content;
            $data   =   ob_get_contents();
            ob_end_clean();
            if(CACHESITE) {
                    // If you have a define for site root, use instead
                    $dir    =   $_SERVER['DOCUMENT_ROOT'].'/temp/';
                    if(is_file($cached = $dir.$saveto)) {
                            include($cached);
                            return;
                        }
                    if(!is_dir($dir))
                        mkdir($dir,0755,true);
                    $cfile  =   fopen($cached,'a');
                    fwrite($cfile,$data);
                    fclose($cfile);
                }
            return $data;
        }
    // Whatever your content is, it needs to be in a string
    // Use output buffering if you have include pages
    $test   =   'test is the best'.rand();
    echo CachePage($test,'thispage.php');
?>

无论如何,有很多方法可以做到这一点,但是缓存相对来说工作得很好。