如何在编辑会话期间编辑实时网页而不会导致页面访问者出现混乱?

时间:2015-07-12 01:47:35

标签: php html

请原谅我,如果这些非常基本的问题已被多次询问和回答,但几个小时的搜索没有任何相关内容。

(1)在使用网页“上线”之后,Stackoverflow开发人员想要对页面进行一些更改,但是在完成PROTOTYPING和测试更改的循环之前,不希望这些更改“上线” (你知道,基本的SDLC)。他是如何在网站上这样做的?

(2)对问题进行更为基本的改述:当我花30分钟对现有的实时网页进行更新时,似乎任何访问该网页的访问者都会观察到每一次增量变化(包括我实时制作的无意失误,拼写错误等。我必须在这里遗漏一些非常明显的东西,所以请原谅我!如何在编辑会话期间对当前实况网页进行更改而不会造成混乱?

非常感谢!

3 个答案:

答案 0 :(得分:0)

我看到很多不好的评论和一个错误的答案。你永远不会在实况页面上工作。怎么打破它怎么办?你问这个问题的事实告诉我你不够好,不会犯错误。

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

创建一个子域dev.whatever.com并将您当前的实时网站放在那里。开始你的本地项目工作,当你对这个结果感到满意,然后把它移到你的开发站点以确保没有问题,先做好这一切,然后当你开心时,你就转移到现场。

答案 1 :(得分:-1)

除了我的评论之外,这里还有一个简单的缓存页面脚本,它使用一个define来允许页面以缓存模式或动态模式运行。将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');
?>

无论如何,有很多方法可以做这种事情,但缓存效果相当好。

答案 2 :(得分:-1)

为什么不直接使用不同的文件名保存页面副本。上传并解决它,直到它按你想要的方式工作。除了你之外,没有人会知道页面存在,所以没有人会看到任何问题。一旦你满意,只需使用那些页面代码。