diff --git a/crop.module b/crop.module
index 0aad0d1..c665f35 100644
--- a/crop.module
+++ b/crop.module
@@ -8,6 +8,9 @@
  */
 
 use \Drupal\Core\Form\FormStateInterface;
+use Drupal\Core\StreamWrapper\PublicStream;
+use Drupal\crop\Entity\Crop;
+use Drupal\image\Entity\ImageStyle;
 use \Drupal\media_entity\MediaBundleInterface;
 use \Drupal\file\FileInterface;
 
@@ -108,3 +111,28 @@ function crop_file_delete(FileInterface $file) {
     $crop->delete();
   }
 }
+
+/**
+ * Implements hook_file_url_alter().
+ */
+function crop_file_url_alter(&$uri) {
+  // Parse given URI.
+  $uri_info = parse_url($uri);
+  // Use schema information to skip relative URIs.
+  $protocol = isset($uri_info['scheme']) ? in_array($uri_info['scheme'], ['http', 'https']) : FALSE;
+
+  // Process only files that are stored in "styles" directory.
+  if ($protocol && strpos($uri, PublicStream::basePath() . '/styles/') !== FALSE) {
+    // Match image style, schema, file subdirectory and file name.
+    preg_match("/styles\/(.*?)\/(.*?)\/(.*?)\?/", $uri, $match);
+    // Get the file URI using parsed schema and file path.
+    $file_uri = $match[2] . '://' . $match[3];
+
+    $file_entity = \Drupal::entityTypeManager()->getStorage('file')->loadByProperties(['uri' => $file_uri]);
+    /** @var \Drupal\file_entity\FileEntityInterface $file_entity */
+    $file_entity = reset($file_entity);
+    if ($file_entity) {
+      $uri .= '&v=' . $file_entity->getChangedTime();
+    }
+  }
+}
diff --git a/src/Entity/Crop.php b/src/Entity/Crop.php
index 98c9f35..e6d685b 100644
--- a/src/Entity/Crop.php
+++ b/src/Entity/Crop.php
@@ -188,6 +188,12 @@ class Crop extends ContentEntityBase implements CropInterface {
   public function save() {
     parent::save();
     image_path_flush($this->uri->value);
+    // Resave the file entity to update the "changed time".
+    $file_entity = \Drupal::entityTypeManager()->getStorage('file')->loadByProperties(['uri' => $this->uri->value]);
+    $file_entity = reset($file_entity);
+    if ($file_entity) {
+      $file_entity->save();
+    }
   }
 
   /**
