Index: src/mlx/config.py
===================================================================
--- src/mlx/config.py	(revision 1094)
+++ src/mlx/config.py	(revision 1097)
@@ -222,4 +222,5 @@
         self._rememberPassword = False
 
+        self._clearBrowserCacheOnStart = False
         self._language = ""
         self._hideMinimizedWindow = True
@@ -310,4 +311,16 @@
 
     @property
+    def clearBrowseCacheOnStart(self):
+        """Get whether the browser cache should be cleared on start."""
+        return self._clearBrowserCacheOnStart
+
+    @clearBrowseCacheOnStart.setter
+    def clearBrowseCacheOnStart(self, clearBrowseCacheOnStart):
+        """Set whether the browser cache should be cleared on start."""
+        if clearBrowseCacheOnStart!=self._clearBrowserCacheOnStart:
+            self._clearBrowserCacheOnStart = clearBrowseCacheOnStart
+            self._modified = True
+
+    @property
     def language(self):
         """Get the language to use."""
@@ -753,4 +766,8 @@
         self._rememberPassword = self._getBoolean(config, "login",
                                                   "rememberPassword", False)
+
+        self._clearBrowserCacheOnStart = \
+            self._getBoolean(config, "general",
+                             "clearBrowseCacheOnStart", False)
 
         self._language = self._get(config, "general", "language", "")
@@ -863,4 +880,6 @@
 
         config.add_section("general")
+        config.set("general", "clearBrowseCacheOnStart",
+                   "yes" if self._clearBrowserCacheOnStart else "no")
         if self._language:
             config.set("general", "language", self._language)
@@ -1034,4 +1053,5 @@
         print("  rememberPassword:", self._rememberPassword)
 
+        print("  clearBrowseCacheOnStart:", self._clearBrowserCacheOnStart)
         print("  language:", self._language)
 
Index: src/mlx/gui/acars.py
===================================================================
--- src/mlx/gui/acars.py	(revision 1083)
+++ src/mlx/gui/acars.py	(revision 1097)
@@ -27,17 +27,21 @@
         super(ACARS, self).__init__()
         self._gui = gui
+        self._container = None
         self._browser = None
 
     def start(self):
         """Start the browser."""
-        container = cef.getContainer()
+        self._container = cef.getContainer()
+        self.pack_start(self._container, True, True, 0)
 
-        self.pack_start(container, True, True, 0)
-
-        self._browser = cef.startInContainer(container, ACARS.URL)
+        self._browser = cef.startInContainer(self._container, ACARS.URL)
 
     def stop(self):
         """Close the browser."""
         if self._browser is not None:
-            self._browser.CloseBrowser(False)
+            self._browser.CloseBrowser(True)
             self._browser = None
+
+        if self._container is not None:
+            self.remove(self._container)
+            self._container = None
Index: src/mlx/gui/cef.py
===================================================================
--- src/mlx/gui/cef.py	(revision 1096)
+++ src/mlx/gui/cef.py	(revision 1097)
@@ -34,4 +34,7 @@
 # The SimBrief handler
 _simBriefHandler = None
+
+# The cache directory
+cacheDir = os.path.join(GLib.get_user_cache_dir(), "mlxcef")
 
 #------------------------------------------------------------------------------
@@ -222,12 +225,4 @@
     print("Initializing CEF with args:", args)
 
-    cacheDir = os.path.join(GLib.get_user_cache_dir(), "mlxcef")
-
-    try:
-        shutil.rmtree(cacheDir)
-        print("gui.cef._initializeCEF1: the cache directory is removed")
-    except Exception as e:
-        print("gui.cef._initializeCEF1: cache directory removal failed:", e)
-
     settings = {
         "debug": True, # cefpython debug messages in console and in log_file
@@ -241,5 +236,7 @@
             (cefpython.GetModuleDirectory(), "subprocess"),
         "windowless_rendering_enabled": True,
-        "cache_path": cacheDir
+        "cache_path": cacheDir,
+        "persist_session_cookies": True,
+        "persist_user_preferences": True
     }
 
@@ -378,4 +375,11 @@
 #------------------------------------------------------------------------------
 
+def finalizeSimBrief():
+    """Finallize the (hidden) browser window for SimBrief."""
+    if _simBriefHandler is not None:
+        _simBriefHandler.finalize()
+
+#------------------------------------------------------------------------------
+
 def finalize():
     """Finalize the Chrome Embedded Framework."""
@@ -383,7 +387,16 @@
     _toQuit = True
 
-    _simBriefHandler.finalize()
-
-    cefpython.Shutdown()
+    if os.name!="nt":
+        cefpython.Shutdown()
+
+#------------------------------------------------------------------------------
+
+def clearCache():
+    """Clear the CEF cache directory."""
+    try:
+        shutil.rmtree(cacheDir)
+        print("gui.cef.clearCache: the cache directory is removed")
+    except Exception as e:
+        print("gui.cef.clearCache: cache directory removal failed:", e)
 
 #------------------------------------------------------------------------------
Index: src/mlx/gui/flight.py
===================================================================
--- src/mlx/gui/flight.py	(revision 1087)
+++ src/mlx/gui/flight.py	(revision 1097)
@@ -4001,4 +4001,11 @@
         self._container.hide()
         self._browser = None
+
+    def finalizeCEF(self):
+        """Close the CEF browser."""
+        if self._browser is not None:
+            self._container.hide()
+            self._browser.CloseBrowser(True)
+            self._browser = None
 
 #-----------------------------------------------------------------------------
@@ -6739,4 +6746,8 @@
         self.gui.rtoToggled(indicated)
 
+    def finalizeCEF(self):
+        """Called when any CEF browsers should be finalized."""
+        self._simBriefingPage.finalizeCEF()
+
     def _connectSimulator(self, simulatorType):
         """Connect to the simulator."""
Index: src/mlx/gui/gui.py
===================================================================
--- src/mlx/gui/gui.py	(revision 1083)
+++ src/mlx/gui/gui.py	(revision 1097)
@@ -480,8 +480,14 @@
             self.updateDone()
 
+        if self.config.clearBrowseCacheOnStart:
+            cef.clearCache()
+            self.config.clearBrowseCacheOnStart = False
+
         singleton.raiseCallback = self.raiseCallback
         Gtk.main()
         singleton.raiseCallback = None
 
+        self._wizard.finalizeCEF()
+        cef.finalizeSimBrief()
         self._acars.stop()
 
@@ -855,7 +861,8 @@
             self.showMonitorWindow()
 
-    def restart(self):
+    def restart(self, clearCEFCache = False):
         """Quit and restart the application."""
         self.toRestart = True
+        self.config.clearBrowseCacheOnStart = clearCEFCache
         self._quit(force = True)
 
@@ -1177,4 +1184,12 @@
         toolsMenu.append(Gtk.SeparatorMenuItem())
 
+        clearCEFCacheMenuItem = Gtk.ImageMenuItem(Gtk.STOCK_DISCARD)
+        clearCEFCacheMenuItem.set_use_stock(True)
+        clearCEFCacheMenuItem.set_label(xstr("menu_tools_clear_cef_cache"))
+        clearCEFCacheMenuItem.connect("activate", self._clearCEFCache)
+        toolsMenu.append(clearCEFCacheMenuItem)
+
+        toolsMenu.append(Gtk.SeparatorMenuItem())
+
         bugReportMenuItem = Gtk.ImageMenuItem(Gtk.STOCK_PASTE)
         bugReportMenuItem.set_use_stock(True)
@@ -1419,4 +1434,10 @@
         self._setupTimeSync()
         self._listenHotkeys()
+
+    def _clearCEFCache(self, menuItem):
+        """Callback for clearing the CEF cache."""
+        if askYesNo(xstr("clear_cef_cache_confirmation"),
+                    parent = self._mainWindow):
+            self.restart(clearCEFCache = True)
 
     def _reportBug(self, menuItem):
