簡體   English   中英

在編輯 session 期間,如何編輯實時網頁而不會對頁面訪問者造成混亂?

[英]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');
?>

無論如何,有很多方法可以做這種事情,但緩存相對來說效果更好。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM