diff --git a/src/infrastructure/markup/PhabricatorMarkupOneOff.php b/src/infrastructure/markup/PhabricatorMarkupOneOff.php
index d3350bfd27..58c5d054dd 100644
--- a/src/infrastructure/markup/PhabricatorMarkupOneOff.php
+++ b/src/infrastructure/markup/PhabricatorMarkupOneOff.php
@@ -1,80 +1,94 @@
 <?php
 
 /**
  * Concrete object for accessing the markup engine with arbitrary blobs of
  * text, like form instructions. Usage:
  *
  *   $output = PhabricatorMarkupEngine::renderOneObject(
  *     id(new PhabricatorMarkupOneOff())->setContent($some_content),
  *     'default',
  *     $viewer);
  *
  * This is less efficient than batching rendering, but appropriate for small
  * amounts of one-off text in form instructions.
  */
 final class PhabricatorMarkupOneOff implements PhabricatorMarkupInterface {
 
   private $content;
   private $preserveLinebreaks;
   private $engineRuleset;
+  private $disableCache;
 
   public function setEngineRuleset($engine_ruleset) {
     $this->engineRuleset = $engine_ruleset;
     return $this;
   }
 
   public function getEngineRuleset() {
     return $this->engineRuleset;
   }
 
   public function setPreserveLinebreaks($preserve_linebreaks) {
     $this->preserveLinebreaks = $preserve_linebreaks;
     return $this;
   }
 
   public function setContent($content) {
     $this->content = $content;
     return $this;
   }
 
   public function getContent() {
     return $this->content;
   }
 
+  public function setDisableCache($disable_cache) {
+    $this->disableCache = $disable_cache;
+    return $this;
+  }
+
+  public function getDisableCache() {
+    return $this->disableCache;
+  }
+
   public function getMarkupFieldKey($field) {
     return PhabricatorHash::digestForIndex($this->getContent()).':oneoff';
   }
 
   public function newMarkupEngine($field) {
     if ($this->engineRuleset) {
       return PhabricatorMarkupEngine::getEngine($this->engineRuleset);
     } else if ($this->preserveLinebreaks) {
       return PhabricatorMarkupEngine::getEngine();
     } else {
       return PhabricatorMarkupEngine::getEngine('nolinebreaks');
     }
   }
 
   public function getMarkupText($field) {
     return $this->getContent();
   }
 
   public function didMarkupText(
     $field,
     $output,
     PhutilMarkupEngine $engine) {
 
     require_celerity_resource('phabricator-remarkup-css');
     return phutil_tag(
       'div',
       array(
         'class' => 'phabricator-remarkup',
       ),
       $output);
   }
 
   public function shouldUseMarkupCache($field) {
+    if ($this->getDisableCache()) {
+      return false;
+    }
+
     return true;
   }
 
 }
diff --git a/src/infrastructure/markup/PhabricatorMarkupPreviewController.php b/src/infrastructure/markup/PhabricatorMarkupPreviewController.php
index 5417df09ab..743bda0850 100644
--- a/src/infrastructure/markup/PhabricatorMarkupPreviewController.php
+++ b/src/infrastructure/markup/PhabricatorMarkupPreviewController.php
@@ -1,22 +1,23 @@
 <?php
 
 final class PhabricatorMarkupPreviewController
   extends PhabricatorController {
 
   public function processRequest() {
     $request = $this->getRequest();
     $viewer = $request->getUser();
 
     $text = $request->getStr('text');
 
     $output = PhabricatorMarkupEngine::renderOneObject(
       id(new PhabricatorMarkupOneOff())
         ->setPreserveLinebreaks(true)
+        ->setDisableCache(true)
         ->setContent($text),
       'default',
       $viewer);
 
     return id(new AphrontAjaxResponse())
       ->setContent($output);
   }
 }