Create a batch file called md5.bat and amend the paths if required
#SETLOCAL EnableExtensions
for /f %%G in ("%~1") do set "_len=%%~zG"
if %_len% EQU 0 (
  echo MD5 hash of %1
  echo D41D8CD98F00B204E9800998ECF8427E
  echo CertUtil bypassed for zero file size
  echo D41D8CD98F00B204E9800998ECF8427E|clip  
) else (
  for /f "tokens=*" %%a in ('%SystemRoot%\system32\certutil -hashfile "%~1" MD5') do (
    echo %%a
    for /f "delims=" %%b in ('echo %%a^|%SystemRoot%\system32\findstr /r /i /x ^[0-9A-F]*[0-9A-F]$') do (
      if "%%b" neq "" echo | set /p="%%b"|%SystemRoot%\system32\clip
I added this to the DataFlex Studio Tools menu:
MD5 Hash to clipboard
D:\Work\DF Toolsmd5.bat

After I change and save a css or js, I use it from the tools menu, resulting in having the md5 in my clipboard buffer (in this example d01216cd64d9dec24c09096a55572162).
I then go to the location of the include in the html and paste so it looks like

<script type="text/javascript" src="js/CoolStuff.js?md5=d01216cd64d9dec24c09096a55572162"></script>
This way, the cache is optimised (only ever refreshed when the file differs). It is also version control safe, when you commit the component and the html at the same commit. In the odd occasion that two branches have a change to the component (js/css), a merge conflict will prompt you in creating a new md5 hash for the combined code.

It is a couple of steps every time you change a css or js, but it saves major head-aches.