diff --git a/app/code/Magento/Backend/etc/config.xml b/app/code/Magento/Backend/etc/config.xml
index 459dd377e36bac315d1d56f6e8dd4e499986c149..760bba1fc12f4c1c3096ad6f422bf645ed174d06 100644
--- a/app/code/Magento/Backend/etc/config.xml
+++ b/app/code/Magento/Backend/etc/config.xml
@@ -11,6 +11,9 @@
             <template>
                 <minify_html>0</minify_html>
             </template>
+            <static>
+                <sign>1</sign>
+            </static>
         </dev>
         <system>
             <media_storage_configuration>
diff --git a/lib/internal/Magento/Framework/App/Test/Unit/View/Deployment/VersionTest.php b/lib/internal/Magento/Framework/App/Test/Unit/View/Deployment/VersionTest.php
index 30f398b4f6000bdd2824ed19b8c625a6e4e21566..187c043945d059992d6dc59a8713fc413b1a9752 100644
--- a/lib/internal/Magento/Framework/App/Test/Unit/View/Deployment/VersionTest.php
+++ b/lib/internal/Magento/Framework/App/Test/Unit/View/Deployment/VersionTest.php
@@ -5,7 +5,8 @@
  */
 namespace Magento\Framework\App\Test\Unit\View\Deployment;
 
-use \Magento\Framework\App\View\Deployment\Version;
+use Magento\Framework\App\View\Deployment\Version;
+use Magento\Framework\Exception\FileSystemException;
 
 /**
  * Class VersionTest
@@ -18,29 +19,39 @@ class VersionTest extends \PHPUnit_Framework_TestCase
     private $object;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\App\State|\PHPUnit_Framework_MockObject_MockObject
      */
-    private $appState;
+    private $appStateMock;
 
     /**
-     * @var \PHPUnit_Framework_MockObject_MockObject
+     * @var \Magento\Framework\App\View\Deployment\Version\StorageInterface|\PHPUnit_Framework_MockObject_MockObject
      */
-    private $versionStorage;
+    private $versionStorageMock;
+
+    /**
+     * @var \Psr\Log\LoggerInterface|\PHPUnit_Framework_MockObject_MockObject
+     */
+    private $loggerMock;
 
     protected function setUp()
     {
-        $this->appState = $this->getMock(\Magento\Framework\App\State::class, [], [], '', false);
-        $this->versionStorage = $this->getMock(\Magento\Framework\App\View\Deployment\Version\StorageInterface::class);
-        $this->object = new Version($this->appState, $this->versionStorage);
+        $objectManager = new \Magento\Framework\TestFramework\Unit\Helper\ObjectManager($this);
+        $this->appStateMock = $this->getMock(\Magento\Framework\App\State::class, [], [], '', false);
+        $this->versionStorageMock = $this->getMock(
+            \Magento\Framework\App\View\Deployment\Version\StorageInterface::class
+        );
+        $this->loggerMock = $this->getMock(\Psr\Log\LoggerInterface::class);
+        $this->object = new Version($this->appStateMock, $this->versionStorageMock);
+        $objectManager->setBackwardCompatibleProperty($this->object, 'logger', $this->loggerMock);
     }
 
     public function testGetValueDeveloperMode()
     {
-        $this->appState
+        $this->appStateMock
             ->expects($this->once())
             ->method('getMode')
             ->will($this->returnValue(\Magento\Framework\App\State::MODE_DEVELOPER));
-        $this->versionStorage->expects($this->never())->method($this->anything());
+        $this->versionStorageMock->expects($this->never())->method($this->anything());
         $this->assertInternalType('integer', $this->object->getValue());
         $this->object->getValue(); // Ensure computation occurs only once and result is cached in memory
     }
@@ -51,12 +62,12 @@ class VersionTest extends \PHPUnit_Framework_TestCase
      */
     public function testGetValueFromStorage($appMode)
     {
-        $this->appState
+        $this->appStateMock
             ->expects($this->once())
             ->method('getMode')
             ->will($this->returnValue($appMode));
-        $this->versionStorage->expects($this->once())->method('load')->will($this->returnValue('123'));
-        $this->versionStorage->expects($this->never())->method('save');
+        $this->versionStorageMock->expects($this->once())->method('load')->will($this->returnValue('123'));
+        $this->versionStorageMock->expects($this->never())->method('save');
         $this->assertEquals('123', $this->object->getValue());
         $this->object->getValue(); // Ensure caching in memory
     }
@@ -70,20 +81,106 @@ class VersionTest extends \PHPUnit_Framework_TestCase
         ];
     }
 
-    public function testGetValueDefaultModeSaving()
-    {
+    /**
+     * $param bool $isUnexpectedValueExceptionThrown
+     * $param bool $isFileSystemExceptionThrown
+     * @dataProvider getValueDefaultModeDataProvider
+     */
+    public function testGetValueDefaultMode(
+        $isUnexpectedValueExceptionThrown,
+        $isFileSystemExceptionThrown = null
+    ) {
         $versionType = 'integer';
-        $this->appState
+        $this->appStateMock
             ->expects($this->once())
             ->method('getMode')
-            ->will($this->returnValue(\Magento\Framework\App\State::MODE_DEFAULT));
-        $storageException = new \UnexpectedValueException('Does not exist in the storage');
-        $this->versionStorage
-            ->expects($this->once())
-            ->method('load')
-            ->will($this->throwException($storageException));
-        $this->versionStorage->expects($this->once())->method('save')->with($this->isType($versionType));
+            ->willReturn(\Magento\Framework\App\State::MODE_DEFAULT);
+        if ($isUnexpectedValueExceptionThrown) {
+            $storageException = new \UnexpectedValueException('Does not exist in the storage');
+            $this->versionStorageMock
+                ->expects($this->once())
+                ->method('load')
+                ->will($this->throwException($storageException));
+            $this->versionStorageMock->expects($this->once())
+                ->method('save')
+                ->with($this->isType($versionType));
+            if ($isFileSystemExceptionThrown) {
+                $fileSystemException = new FileSystemException(
+                    new \Magento\Framework\Phrase('Can not load static content version')
+                );
+                $this->versionStorageMock
+                    ->expects($this->once())
+                    ->method('save')
+                    ->will($this->throwException($fileSystemException));
+                $this->loggerMock->expects($this->once())
+                    ->method('critical')
+                    ->with('Can not save static content version.');
+            } else {
+                $this->loggerMock->expects($this->never())
+                    ->method('critical');
+            }
+        } else {
+            $this->versionStorageMock
+                ->expects($this->once())
+                ->method('load')
+                ->willReturn(1475779229);
+            $this->loggerMock->expects($this->never())
+                ->method('critical');
+        }
         $this->assertInternalType($versionType, $this->object->getValue());
-        $this->object->getValue(); // Ensure caching in memory
+        $this->object->getValue();
+    }
+
+    /**
+     * @return array
+     */
+    public function getValueDefaultModeDataProvider()
+    {
+        return [
+            [false],
+            [true, false],
+            [true, true]
+        ];
+    }
+
+    /**
+     * @param bool $isUnexpectedValueExceptionThrown
+     * @dataProvider getValueProductionModeDataProvider
+     */
+    public function testGetValueProductionMode(
+        $isUnexpectedValueExceptionThrown
+    ) {
+        $this->appStateMock
+            ->expects($this->once())
+            ->method('getMode')
+            ->willReturn(\Magento\Framework\App\State::MODE_PRODUCTION);
+        if ($isUnexpectedValueExceptionThrown) {
+            $storageException = new \UnexpectedValueException('Does not exist in the storage');
+            $this->versionStorageMock
+                ->expects($this->once())
+                ->method('load')
+                ->will($this->throwException($storageException));
+            $this->loggerMock->expects($this->once())
+                ->method('critical')
+                ->with('Can not load static content version.');
+        } else {
+            $this->versionStorageMock
+                ->expects($this->once())
+                ->method('load')
+                ->willReturn(1475779229);
+        }
+        $this->assertInternalType('integer', $this->object->getValue());
+        $this->object->getValue();
+    }
+
+    /**
+     * @return array
+     */
+    public function getValueProductionModeDataProvider()
+    {
+        return [
+            [false],
+            [true],
+        ];
     }
 }
diff --git a/lib/internal/Magento/Framework/App/View/Deployment/Version.php b/lib/internal/Magento/Framework/App/View/Deployment/Version.php
index 8e927e47921a0c428493de2bb6e13b17407483ad..7f6dc7fa9285ccc3987d84091bc9edb76d09f794 100644
--- a/lib/internal/Magento/Framework/App/View/Deployment/Version.php
+++ b/lib/internal/Magento/Framework/App/View/Deployment/Version.php
@@ -6,6 +6,9 @@
 
 namespace Magento\Framework\App\View\Deployment;
 
+use Psr\Log\LoggerInterface;
+use Magento\Framework\Exception\FileSystemException;
+
 /**
  * Deployment version of static files
  */
@@ -26,6 +29,11 @@ class Version
      */
     private $cachedValue;
 
+    /**
+     * @var LoggerInterface
+     */
+    private $logger;
+
     /**
      * @param \Magento\Framework\App\State $appState
      * @param Version\StorageInterface $versionStorage
@@ -59,23 +67,49 @@ class Version
      */
     protected function readValue($appMode)
     {
-        switch ($appMode) {
-            case \Magento\Framework\App\State::MODE_DEFAULT:
-                try {
-                    $result = $this->versionStorage->load();
-                } catch (\UnexpectedValueException $e) {
-                    $result = (new \DateTime())->getTimestamp();
-                    $this->versionStorage->save($result);
+        if ($appMode == \Magento\Framework\App\State::MODE_DEVELOPER) {
+            $result = $this->generateVersion();
+        } else {
+            try {
+                $result = $this->versionStorage->load();
+            } catch (\UnexpectedValueException $e) {
+                $result = $this->generateVersion();
+                if ($appMode == \Magento\Framework\App\State::MODE_DEFAULT) {
+                    try {
+                        $this->versionStorage->save($result);
+                    } catch (FileSystemException $e) {
+                        $this->getLogger()->critical('Can not save static content version.');
+                    }
+                } else {
+                    $this->getLogger()->critical('Can not load static content version.');
                 }
-                break;
+            }
+        }
+        return $result;
+    }
 
-            case \Magento\Framework\App\State::MODE_DEVELOPER:
-                $result = (new \DateTime())->getTimestamp();
-                break;
+    /**
+     * Generate version of static content
+     *
+     * @return int
+     */
+    private function generateVersion()
+    {
+        return time();
+    }
 
-            default:
-                $result = $this->versionStorage->load();
+    /**
+     * Get logger
+     *
+     * @return LoggerInterface
+     * @deprecated
+     */
+    private function getLogger()
+    {
+        if ($this->logger == null) {
+            $this->logger = \Magento\Framework\App\ObjectManager::getInstance()
+                ->get(LoggerInterface::class);
         }
-        return $result;
+        return $this->logger;
     }
 }