Преглед изворни кода

mvp for not using cdn when blocked

Henry Oswald пре 10 година
родитељ
комит
3d36dc7d6c

+ 7 - 2
services/web/app/coffee/infrastructure/ExpressLocals.coffee

@@ -61,11 +61,16 @@ module.exports = (app, webRouter, apiRouter)->
 
 	webRouter.use (req, res, next)-> 
 
+		cdnBlocked = req.query.nocdn == 'true' or req.session.cdnBlocked
+
+		if cdnBlocked and !req.session.cdnBlocked?
+			req.session.cdnBlocked = true
+
 		isDark = req.headers?.host?.slice(0,4)?.toLowerCase() == "dark"
 		isSmoke = req.headers?.host?.slice(0,5)?.toLowerCase() == "smoke"
 		isLive = !isDark and !isSmoke
-
-		if cdnAvailable and isLive
+		
+		if cdnAvailable and isLive and !cdnBlocked
 			staticFilesBase = Settings.cdn?.web?.host
 		else if darkCdnAvailable and isDark
 			staticFilesBase = Settings.cdn?.web?.darkHost

+ 10 - 1
services/web/app/views/layout.jade

@@ -8,6 +8,7 @@ html(itemscope, itemtype='http://schema.org/Product')
 			window.similarproducts = true
 		style [ng\:cloak], [ng-cloak], [data-ng-cloak], [x-ng-cloak], .ng-cloak, .x-ng-cloak  {display: none !important; display: none; }
 
+
 		-if (typeof(gaExperiments) != "undefined")
 			|!{gaExperiments}
 		
@@ -51,8 +52,16 @@ html(itemscope, itemtype='http://schema.org/Product')
 			window.csrfToken = "#{csrfToken}";
 			
 		block scripts
-		script(src=buildJsPath("libs/jquery-1.11.1.min.js", {fingerprint:false}))
 		script(src=buildJsPath("libs/angular-1.3.15.min.js", {fingerprint:false}))
+		script(src=buildJsPath("libs/jquery-1.11.1.min.js", {fingerprint:false}))
+		script(type="text/javascript").
+			var noCdnKey = "nocdn=true"
+			var cdnBlocked = typeof jQuery === 'undefined'
+			var noCdnAlreadyInUrl = window.location.href.indexOf(noCdnKey) != -1 //prevent loops
+			if (cdnBlocked && !noCdnAlreadyInUrl) {
+				window.location.search += '&'+noCdnKey;
+			}
+
 		script.
 			window.sharelatex = {
 				siteUrl: '#{settings.siteUrl}',

+ 3 - 3
services/web/config/settings.defaults.coffee

@@ -114,9 +114,9 @@ module.exports = settings =
 		showSocialButtons: false
 		showComments: false
 
-	# cdn:
-	# 	web:
-	# 		host:"http://cdn.sharelatex.dev:3000"
+	cdn:
+		web:
+			host:"http://nowhere.sharelatex.dev"
 	#		darkHost:"http://cdn.sharelatex.dev:3000"
 
 	# Where your instance of ShareLaTeX can be found publically. Used in emails