Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorClement Ho <clemmakesapps@gmail.com>2018-07-26 18:00:18 +0300
committerClement Ho <clemmakesapps@gmail.com>2018-07-26 18:00:18 +0300
commit1f70de1806bedb0b80a3d13bdc38f8022f2fbc6a (patch)
tree7f675aba4cd25e505856f6095df48d72159a4f08
parent2fbafe1a41f846a5fd6a58d27f9fb16484edb070 (diff)
parentf7ac5384258f02fc2f4da681338f928a5363b19c (diff)
Merge branch '49107-prefetching-of-assets-and-cdn-domain' into 'master'
DNS Prefetching + Preconnect of assets_host (CDN Domain) Closes #49107 See merge request gitlab-org/gitlab-ce!20781
-rw-r--r--app/views/layouts/_head.html.haml5
-rw-r--r--changelogs/unreleased/49107-prefetching-of-assets-and-cdn-domain.yml5
-rw-r--r--spec/views/layouts/_head.html.haml_spec.rb33
3 files changed, 43 insertions, 0 deletions
diff --git a/app/views/layouts/_head.html.haml b/app/views/layouts/_head.html.haml
index 9253a0652da..ac5916d129c 100644
--- a/app/views/layouts/_head.html.haml
+++ b/app/views/layouts/_head.html.haml
@@ -3,6 +3,11 @@
- site_name = "GitLab"
%head{ prefix: "og: http://ogp.me/ns#" }
%meta{ charset: "utf-8" }
+
+ - if Feature.enabled?('asset_host_prefetch') && ActionController::Base.asset_host
+ %link{ rel: 'dns-prefetch', href: ActionController::Base.asset_host }
+ %link{ rel: 'preconnnect', href: ActionController::Base.asset_host, crossorigin: '' }
+
%meta{ 'http-equiv' => 'X-UA-Compatible', content: 'IE=edge' }
-# Open Graph - http://ogp.me/
diff --git a/changelogs/unreleased/49107-prefetching-of-assets-and-cdn-domain.yml b/changelogs/unreleased/49107-prefetching-of-assets-and-cdn-domain.yml
new file mode 100644
index 00000000000..541b562adac
--- /dev/null
+++ b/changelogs/unreleased/49107-prefetching-of-assets-and-cdn-domain.yml
@@ -0,0 +1,5 @@
+---
+title: DNS prefetching if asset_host for CDN hosting is set
+merge_request: 20781
+author:
+type: performance
diff --git a/spec/views/layouts/_head.html.haml_spec.rb b/spec/views/layouts/_head.html.haml_spec.rb
index e8e6d2e7a75..9d1efcabb80 100644
--- a/spec/views/layouts/_head.html.haml_spec.rb
+++ b/spec/views/layouts/_head.html.haml_spec.rb
@@ -29,6 +29,39 @@ describe 'layouts/_head' do
expect(rendered).to match(%{content="foo&quot; http-equiv=&quot;refresh"})
end
+ context 'when an asset_host is set and feature is activated in the config it will' do
+ let(:asset_host) { 'http://assets' }
+
+ before do
+ stub_feature_flags(asset_host_prefetch: true)
+ allow(ActionController::Base).to receive(:asset_host).and_return(asset_host)
+ end
+
+ it 'add a link dns-prefetch tag' do
+ render
+ expect(rendered).to match('<link href="http://assets" rel="dns-prefetch">')
+ end
+
+ it 'add a link preconnect tag' do
+ render
+ expect(rendered).to match('<link crossorigin="" href="http://assets" rel="preconnnect">')
+ end
+ end
+
+ context 'when an asset_host is set and feature is not activated in the config it will' do
+ let(:asset_host) { 'http://assets' }
+
+ before do
+ stub_feature_flags(asset_host_prefetch: false)
+ allow(ActionController::Base).to receive(:asset_host).and_return(asset_host)
+ end
+
+ it 'not add a link dns-prefetch tag' do
+ render
+ expect(rendered).not_to match('<link href="http://assets" rel="dns-prefetch">')
+ end
+ end
+
def stub_helper_with_safe_string(method)
allow_any_instance_of(PageLayoutHelper).to receive(method)
.and_return(%q{foo" http-equiv="refresh}.html_safe)