org: cache

 
 14.8.2.16 ‘:cache’
 ..................
 
 The ‘:cache’ header argument controls the use of in-buffer caching of
 the results of evaluating code blocks.  It can be used to avoid
 re-evaluating unchanged code blocks.  Note that the ‘:cache’ header
 argument will not attempt to cache results when the ‘:session’ header
 argument is used, because the results of the code block execution may be
 stored in the session outside of the Org mode buffer.  The ‘:cache’
 header argument can have one of two values: ‘yes’ or ‘no’.
 
    • ‘no’ The default.  No caching takes place, and the code block will
      be evaluated every time it is called.
    • ‘yes’ Every time the code block is run a SHA1 hash of the code and
      arguments passed to the block will be generated.  This hash is
      packed into the ‘#+RESULTS:’ line and will be checked on subsequent
      executions of the code block.  If the code block has not changed
      since the last time it was evaluated, it will not be re-evaluated.
 
    Code block caches notice if the value of a variable argument to the
 code block has changed.  If this is the case, the cache is invalidated
 and the code block is re-run.  In the following example, ‘caller’ will
 not be re-run unless the results of ‘random’ have changed since it was
 last run.
 
       #+NAME: random
       #+BEGIN_SRC R :cache yes
       runif(1)
       #+END_SRC
 
       #+RESULTS[a2a72cd647ad44515fab62e144796432793d68e1]: random
       0.4659510825295
 
       #+NAME: caller
       #+BEGIN_SRC emacs-lisp :var x=random :cache yes
       x
       #+END_SRC
 
       #+RESULTS[bec9c8724e397d5df3b696502df3ed7892fc4f5f]: caller
       0.254227238707244