diff --git a/devtoolslib/shell_arguments.py b/devtoolslib/shell_arguments.py
index 88f3f0b..9df58b3 100644
--- a/devtoolslib/shell_arguments.py
+++ b/devtoolslib/shell_arguments.py
@@ -67,7 +67,7 @@
 
 
 def _apply_mappings(shell, original_arguments, map_urls, map_origins,
-                    free_host_ports):
+                    free_ports, free_host_ports):
   """Applies mappings for specified urls and origins. For each local path
   specified as destination a local server will be spawned and the mapping will
   be rewritten accordingly.
@@ -79,18 +79,24 @@
         <url>=<url-or-local-path>.
     map_origins: List of origin mappings, each in the form of
         <origin>=<url-or-local-path>.
+    free_ports: Iff True, run local development servers on system-allocated
+        ports. This defeats any performance benefits from caching.
+    free_host_ports: Only applicable on Android. Iff True, local development
+        servers are run on system-allocated ports, but are still forwarded from
+        fixed ports on the device.
 
   Returns:
     The updated argument list.
   """
-  next_port = _MAPPINGS_BASE_PORT
+  next_port = 0 if free_ports else _MAPPINGS_BASE_PORT
   args = original_arguments
   if map_urls:
     # Sort the mappings to preserve caching regardless of argument order.
     for map_url in sorted(map_urls):
       mapping = _rewrite(map_url, _host_local_url_destination, shell, next_port,
                          free_host_ports)
-      next_port += 1
+      if not free_ports:
+        next_port += 1
       # All url mappings need to be coalesced into one shell argument.
       args = append_to_argument(args, '--url-mappings=', mapping)
 
@@ -98,13 +104,14 @@
     for map_origin in sorted(map_origins):
       mapping = _rewrite(map_origin, _host_local_origin_destination, shell,
                          next_port, free_host_ports)
-      next_port += 1
+      if not free_ports:
+        next_port += 1
       # Origin mappings are specified as separate, repeated shell arguments.
       args.append('--map-origin=' + mapping)
   return args
 
 
-def configure_local_origin(shell, local_dir, free_host_port):
+def configure_local_origin(shell, local_dir, port, free_host_port):
   """Sets up a local http server to serve files in |local_dir| along with
   device port forwarding if needed.
 
@@ -112,8 +119,7 @@
     The list of arguments to be appended to the shell argument list.
   """
 
-  origin_url = shell.serve_local_directory(
-      local_dir, _LOCAL_ORIGIN_PORT, free_host_port)
+  origin_url = shell.serve_local_directory(local_dir, port, free_host_port)
   return ["--origin=" + origin_url]
 
 
@@ -215,13 +221,16 @@
 
   shell_args = _apply_mappings(shell, shell_args, shell_config.map_url_list,
                                shell_config.map_origin_list,
+                               shell_config.free_ports,
                                shell_config.free_host_ports)
 
   if shell_config.origin:
     if _is_web_url(shell_config.origin):
       shell_args.append('--origin=' + shell_config.origin)
     else:
+      local_origin_port = 0 if shell_config.free_ports else _LOCAL_ORIGIN_PORT
       shell_args.extend(configure_local_origin(shell, shell_config.origin,
+                                               local_origin_port,
                                                shell_config.free_host_ports))
 
   if shell_config.content_handlers:
diff --git a/devtoolslib/shell_config.py b/devtoolslib/shell_config.py
index b3faa05..79a14c2 100644
--- a/devtoolslib/shell_config.py
+++ b/devtoolslib/shell_config.py
@@ -29,6 +29,7 @@
     self.map_url_list = []
     self.map_origin_list = []
     self.dev_servers = []
+    self.free_ports = False
     self.content_handlers = dict()
     self.verbose = None
 
@@ -69,6 +70,10 @@
   parser.add_argument('--map-origin', action='append',
                       help='Define a mapping for a url origin in the format '
                       '<origin>=<url-or-local-file-path>')
+  parser.add_argument('--free-ports', action='store_true',
+                      help='Use system-allocated ports when spawning local '
+                      'servers. This defeats caching and thus hurts '
+                      'performance.')
   parser.add_argument('-v', '--verbose', action="store_true",
                       help="Increase output verbosity")
 
@@ -80,7 +85,9 @@
                              'additional logcat tags to display.')
   android_group.add_argument('--free-host-ports', action='store_true',
                              help='Use system-allocated ports on the host when '
-                             'spawning local servers.')
+                             'spawning local servers. This still forwards to '
+                             'fixed ports on the device, so that caching '
+                             'works.')
 
   desktop_group = parser.add_argument_group('Desktop-only',
       'These arguments apply only when running on desktop.')
@@ -153,6 +160,7 @@
   shell_config.origin = script_args.origin
   shell_config.map_url_list = script_args.map_url
   shell_config.map_origin_list = script_args.map_origin
+  shell_config.free_ports = script_args.free_ports
   shell_config.verbose = script_args.verbose
 
   # Android-only.
