diff --git a/l10n_update.check.inc b/l10n_update.check.inc
index b18be39..9bc1f49 100644
--- a/l10n_update.check.inc
+++ b/l10n_update.check.inc
@@ -258,6 +258,7 @@ function l10n_update_source_check_download($source) {
     // There may have been redirects so we store the resulting url
     $source->fileurl = isset($result->redirect_url) ? $result->redirect_url : $url;
     $source->timestamp = $result->updated;
+    $source->hash = md5($result->data);
     return $result;
   }
 }
@@ -303,6 +304,7 @@ function l10n_update_source_check_file($source, $directory = 'translations') {
     $source->type = 'localfile';
     $source->uri = $file->uri;
     $source->timestamp = filemtime($file->uri);
+    $source->hash = md5_file($file->uri);
     return $file;
   }
 }
@@ -423,6 +425,9 @@ function l10n_update_source_history($file) {
  */
 function _l10n_update_source_compare($current, $update) {
   if ($current && $update) {
+    if ($current->hash == $update->hash) {
+      return 0;
+    }
     if (abs($current->timestamp - $update->timestamp) < L10N_UPDATE_TIMESTAMP_THRESHOLD) {
       return 0;
     }
diff --git a/l10n_update.inc b/l10n_update.inc
index 9ab8908..f12ca6f 100644
--- a/l10n_update.inc
+++ b/l10n_update.inc
@@ -257,7 +257,7 @@ function l10n_update_flag_history($available) {
  *   @see l10n_update_http_request()
  */
 function l10n_update_http_check($url, $headers = array()) {
-  $result = l10n_update_http_request($url, array('headers' => $headers, 'method' => 'HEAD'));
+  $result = l10n_update_http_request($url, array('headers' => $headers, 'method' => 'GET'));
   if ($result && $result->code == '200') {
     $result->updated = isset($result->headers['last-modified']) ? strtotime($result->headers['last-modified']) : 0;
   }
diff --git a/l10n_update.install b/l10n_update.install
index a26f972..69e1227 100644
--- a/l10n_update.install
+++ b/l10n_update.install
@@ -132,6 +132,13 @@ function l10n_update_schema() {
         'disp-width' => '11',
         'default' => 0,
       ),
+      'hash' => array(
+        'description' => 'MD5 of file content',
+        'type' => 'varchar',
+        'length' => 128,
+        'not null' => TRUE,
+        'default' => '',
+      ),
     ),
     'primary key' => array('project', 'language'),
   );
@@ -282,3 +289,11 @@ function l10n_update_update_7004() {
     db_create_table('cache_l10n_update', $schema);
   }
 }
+
+
+/**
+ * Create 'hash' field for {l10n_update_file} table.
+ */
+function l10n_update_update_7005() {
+  db_add_field('l10n_update_file', 'hash', array('type' => 'varchar', 'length' => 128, 'not null' => TRUE, 'default' => ''));
+}
