When I originally answered this, external was the only option available. Fortunately, that is no longer the case. Two new options for externalisation are now available from a CTAN mirror near you: memoize and robust-externalize.
Here's a solution using memoize, with tikzcd setup thanks to memoize's author.
\documentclass{article}
\usepackage{memoize}
\mmzset{%
path={dir=memos},
mkdir,
% Sašo Živanović: https://chat.stackexchange.com/transcript/message/64689784#64689784
auto={tikzcd}{memoize,verbatim},
}
\usepackage{tikz}
\usetikzlibrary{cd}
\begin{document}
\begin{tikzpicture}
\node at (0,0) {node};
\end{tikzpicture}
\begin{tikzcd}
A \arrow[rd] \arrow[r, "\varphi"] & B \ & C
\end{tikzcd}
\end{document}
After a single compilation, the images are memoized as part of the production of the main PDF. At this point, they appear as extra pages, in addition to being produced in the appropriate location in the document.

On the second compilation, the externs are extracted into separate PDF files and are now included in the main PDF, without requiring recompilation. The code for the images will be recompiled only if it changes or some further condition holds. (E.g. if you delete the PDFs or instruct memoize to do recompile or whatever.)

Original answer
This solution does not allow you to externalise diagrams produced using the tikzcd environment but it does allow you to externalise other tikz pictures in your document. It is based on a workaround mentioned in the tikz manual in section 50.8.2 (pages 627-8). To make its use more convenient, etoolbox is used to patch the tikzcd environment. Essentially, this turns externalisation off at the beginning of tikzcd environments and then switches it back on again at their ends.
\documentclass{article}
\usepackage{etoolbox,tikz}
\usetikzlibrary{external}
\tikzexternalize
\usetikzlibrary{cd}
\AtBeginEnvironment{tikzcd}{\tikzexternaldisable}
\AtEndEnvironment{tikzcd}{\tikzexternalenable}
\begin{document}
\begin{tikzpicture}
\node at (0,0) {node};
\end{tikzpicture}
\begin{tikzcd}
A \arrow[rd] \arrow[r, "\varphi"] & B \ & C
\end{tikzcd}
\end{document}
On the first run, pdflatex --shell-escape <filename>.tex includes this output:
===== 'mode=convert with system call': Invoking 'pdflatex -shell-escape -halt-o
n-error -interaction=batchmode -jobname "<filename>-figure0" "\def\tikzexternalreal
job{<filename>}\input{<filename>}"' ========
<filename>-figure0.pdf looks like this:

Subsequent runs include the output:
===== Image '<filename>-figure0' is up-to-date. ======
The PDF combines the externalised image from <filename>-figure0.pdf with the one produced from tikzcd on the fly:

How helpful this is will depend on what proportion of your pictures are tikzcd. If the answer is 100%, it will obviously be of no use at all. On the other hand, if the answer is less than 100%, there may be something to be said for it.
tikzcdwithtikzpicturedoes not work. See Section 3.1 on page 11 of thetikz-cdmanual (version 0.9b, of March 8, 2014). Or am I doing something wrong? Have you tried my example? Thanks! – Marco Varisco Apr 17 '14 at 13:15tikzcdenvironment withtikzpicturebecause all definitions like\arroware initialized whentikzcdbegins. I would suggest you to contact the package author for this problem. – Claudio Fiandrino Apr 17 '14 at 14:14@profile-namesyntax. – Claudio Fiandrino Apr 17 '14 at 14:43cdtikzlibrary defined? I thoughttikz-cdwas a separate package, not a TikZ library. – Andrew Stacey Apr 24 '14 at 07:05tikz-cdis distributed separately, but the current version (v0.9b, which requirespgfv3.0.0) is implemented as a library, andtikz-cd.stynow only contains\usetikzlibrary{cd}. – Marco Varisco Apr 25 '14 at 02:19[baseline=0pt]to the\begin{tikzpicture}so that the equation number gets placed correctly ;) – yo' Oct 22 '14 at 09:23[baseline=(current bounding box.west)]seems to work better for me. As for me, I am not using my own solution, which is Not A Good Idea according to @LoopSpace, but I am using the solution he provided. – Marco Varisco Oct 22 '14 at 21:31