diff --git a/modules/field/field.crud.inc b/modules/field/field.crud.inc
index 83863d6..7e43a62 100644
--- a/modules/field/field.crud.inc
+++ b/modules/field/field.crud.inc
@@ -545,12 +545,16 @@ function field_create_instance($instance) {
  *   field_update_instance($instance_info['definition']);
  *   @endcode
  *
+ * @param $reset
+ *   An optional boolean to control whether or not the field cache should
+ *   be refreshed. Defaults to TRUE.
+ *
  * @throws FieldException
  *
  * @see field_info_instance()
  * @see field_create_instance()
  */
-function field_update_instance($instance) {
+function field_update_instance($instance, $reset = TRUE) {
   // Check that the specified field exists.
   $field = field_read_field($instance['field_name']);
   if (empty($field)) {
@@ -570,7 +574,9 @@ function field_update_instance($instance) {
   _field_write_instance($instance, TRUE);
 
   // Clear caches.
-  field_cache_clear();
+  if ($reset) {
+    field_cache_clear();
+  }
 
   module_invoke_all('field_update_instance', $instance, $prior_instance);
 }
diff --git a/modules/field_ui/field_ui.admin.inc b/modules/field_ui/field_ui.admin.inc
index 5c6f529..84cc6a8 100644
--- a/modules/field_ui/field_ui.admin.inc
+++ b/modules/field_ui/field_ui.admin.inc
@@ -784,7 +784,9 @@ function field_ui_field_overview_form_submit($form, &$form_state) {
     if (in_array($key, $form['#fields'])) {
       $instance = field_read_instance($entity_type, $key, $bundle);
       $instance['widget']['weight'] = $values['weight'];
-      field_update_instance($instance);
+      // Field cache will be cleared when the field instance is created, and
+      // field cache should not be cleared N+1 times.
+      field_update_instance($instance, FALSE);
     }
     elseif (in_array($key, $form['#extra'])) {
       $bundle_settings['extra_fields']['form'][$key]['weight'] = $values['weight'];
@@ -1419,9 +1421,11 @@ function _field_ui_add_default_view_mode_settings($entity_type, $bundle, $view_m
       // The instance doesn't specify anything for this view mode, so use the
       // default display settings.
       $instance['display'][$view_mode] = $instance['display']['default'];
-      field_update_instance($instance);
+      field_update_instance($instance, FALSE);
     }
   }
+  // Clear field and entity info cache.
+  field_cache_clear();
 
   // Update display settings for 'extra fields'.
   foreach (array_keys($settings['extra_fields']['display']) as $name) {
