mirror of
https://github.com/the-djmaze/snappymail.git
synced 2025-01-02 21:12:02 +08:00
Hardcoded Styles/@Boot.css dropped some webpack KB overhead. We are going more mobile!
Also replaced some charAt() with []
This commit is contained in:
parent
0d81b2ce88
commit
ba8a566c69
5 changed files with 47 additions and 43 deletions
18
README.md
18
README.md
|
@ -72,23 +72,23 @@ Things might work in Edge 15-18, Firefox 47-62 and Chrome 54-68 due to one polyf
|
|||
|
||||
|js/* |1.14.0 |native |gzip 1.14 |gzip |
|
||||
|----------- |--------: |--------: |--------: |--------: |
|
||||
|admin.js |2.130.942 |1.210.405 | 485.481 | 297.481 |
|
||||
|app.js |4.184.455 |2.955.003 | 932.725 | 691.084 |
|
||||
|boot.js | 671.522 | 93.585 | 169.502 | 28.270 |
|
||||
|admin.js |2.130.942 |1.210.357 | 485.481 | 297.385 |
|
||||
|app.js |4.184.455 |2.954.400 | 932.725 | 690.873 |
|
||||
|boot.js | 671.522 | 64.041 | 169.502 | 20.006 |
|
||||
|libs.js | 647.614 | 437.187 | 194.728 | 133.728 |
|
||||
|polyfills.js | 325.834 | 0 | 71.825 | 0 |
|
||||
|TOTAL js |7.960.367 |4.696.180 |1.854.261 |1.150.563 |
|
||||
|TOTAL js |7.960.367 |4.665.985 |1.854.261 |1.141.992 |
|
||||
|
||||
|js/min/* |1.14.0 |native |gzip 1.14 |gzip |
|
||||
|--------------- |--------: |--------: |--------: |--------: |
|
||||
|admin.min.js | 252.147 | 156.119 | 73.657 | 44.594 |
|
||||
|app.min.js | 511.202 | 384.143 |140.462 |101.497 |
|
||||
|boot.min.js | 66.007 | 11.545 | 22.567 | 4.437 |
|
||||
|admin.min.js | 252.147 | 156.115 | 73.657 | 44.592 |
|
||||
|app.min.js | 511.202 | 384.048 |140.462 |101.496 |
|
||||
|boot.min.js | 66.007 | 7.642 | 22.567 | 2.930 |
|
||||
|libs.min.js | 572.545 | 392.436 |176.720 |123.484 |
|
||||
|polyfills.min.js | 32.452 | 0 | 11.312 | 0 |
|
||||
|TOTAL js/min |1.434.353 | 944.243 |424.718 |274.012 |
|
||||
|TOTAL js/min |1.434.353 | 940.241 |424.718 |272.502 |
|
||||
|
||||
490.110 bytes (150.706 gzip) is not much, but it feels faster.
|
||||
494.112 bytes (152.216 gzip) is not much, but it feels faster.
|
||||
|
||||
|
||||
|css/* |1.14.0 |native |
|
||||
|
|
|
@ -44,10 +44,10 @@ const Base64 = {
|
|||
|
||||
output =
|
||||
output +
|
||||
BASE_64_CHR.charAt(enc1) +
|
||||
BASE_64_CHR.charAt(enc2) +
|
||||
BASE_64_CHR.charAt(enc3) +
|
||||
BASE_64_CHR.charAt(enc4);
|
||||
BASE_64_CHR[enc1] +
|
||||
BASE_64_CHR[enc2] +
|
||||
BASE_64_CHR[enc3] +
|
||||
BASE_64_CHR[enc4];
|
||||
}
|
||||
|
||||
return output;
|
||||
|
@ -68,10 +68,10 @@ const Base64 = {
|
|||
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');
|
||||
|
||||
while (i < input.length) {
|
||||
enc1 = BASE_64_CHR.indexOf(input.charAt(i++));
|
||||
enc2 = BASE_64_CHR.indexOf(input.charAt(i++));
|
||||
enc3 = BASE_64_CHR.indexOf(input.charAt(i++));
|
||||
enc4 = BASE_64_CHR.indexOf(input.charAt(i++));
|
||||
enc1 = BASE_64_CHR.indexOf(input[i++]);
|
||||
enc2 = BASE_64_CHR.indexOf(input[i++]);
|
||||
enc3 = BASE_64_CHR.indexOf(input[i++]);
|
||||
enc4 = BASE_64_CHR.indexOf(input[i++]);
|
||||
|
||||
chr1 = (enc1 << 2) | (enc2 >> 4);
|
||||
chr2 = ((enc2 & 15) << 4) | (enc3 >> 2);
|
||||
|
|
|
@ -6,7 +6,6 @@ import { getHash, setHash, clearHash } from 'Storage/RainLoop';
|
|||
let RL_APP_DATA_STORAGE = null;
|
||||
|
||||
/* eslint-disable camelcase,spaced-comment */
|
||||
window.__rlah = () => getHash();
|
||||
window.__rlah_set = () => setHash();
|
||||
window.__rlah_clear = () => clearHash();
|
||||
window.__rlah_data = () => RL_APP_DATA_STORAGE;
|
||||
|
@ -45,6 +44,16 @@ function runMainBoot(withError) {
|
|||
}
|
||||
}
|
||||
|
||||
const doc = window.document;
|
||||
|
||||
function writeCSS(css) {
|
||||
const style = doc.createElement('style');
|
||||
style.type = 'text/css';
|
||||
style.textContent = css;
|
||||
// style.appendChild(doc.createTextNode(styles));
|
||||
doc.head.appendChild(style);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param {mixed} data
|
||||
* @returns {void}
|
||||
|
@ -54,8 +63,6 @@ window.__initAppData = data => {
|
|||
|
||||
window.__rlah_set();
|
||||
|
||||
const doc = window.document;
|
||||
|
||||
if (RL_APP_DATA_STORAGE) {
|
||||
const css = RL_APP_DATA_STORAGE.IncludeCss,
|
||||
theme = RL_APP_DATA_STORAGE.NewThemeLink,
|
||||
|
@ -67,13 +74,7 @@ window.__initAppData = data => {
|
|||
(doc.getElementById('app-theme-link') || {}).href = theme;
|
||||
}
|
||||
|
||||
if (css) {
|
||||
const style = doc.createElement('style');
|
||||
style.type = 'text/css';
|
||||
style.textContent = css;
|
||||
// style.appendChild(doc.createTextNode(styles));
|
||||
doc.head.appendChild(style);
|
||||
}
|
||||
css && writeCSS(css);
|
||||
|
||||
if (oElDesc && description) {
|
||||
oElDesc.innerHTML = description;
|
||||
|
@ -97,11 +98,12 @@ window.__initAppData = data => {
|
|||
) {
|
||||
p.start().set(5);
|
||||
|
||||
const libs = () =>
|
||||
jassl(appData.StaticLibJsLink).then(() => {
|
||||
const loadScript = jassl,
|
||||
libs = () =>
|
||||
loadScript(appData.StaticLibJsLink).then(() => {
|
||||
doc.getElementById('rl-check').remove();
|
||||
if (appData.IncludeBackground) {
|
||||
const img = appData.IncludeBackground.replace('{{USER}}', window.__rlah ? window.__rlah() || '0' : '0');
|
||||
const img = appData.IncludeBackground.replace('{{USER}}', getHash() || '0');
|
||||
if (img) {
|
||||
doc.documentElement.classList.add('UserBackground');
|
||||
doc.body.style.backgroundImage = "url("+img+")";
|
||||
|
@ -112,15 +114,15 @@ window.__initAppData = data => {
|
|||
libs()
|
||||
.then(() => {
|
||||
p.set(20);
|
||||
return window.Promise.all([jassl(appData.TemplatesLink), jassl(appData.LangLink)]);
|
||||
return window.Promise.all([loadScript(appData.TemplatesLink), loadScript(appData.LangLink)]);
|
||||
})
|
||||
.then(() => {
|
||||
p.set(30);
|
||||
return jassl(appData.StaticAppJsLink);
|
||||
return loadScript(appData.StaticAppJsLink);
|
||||
})
|
||||
.then(() => {
|
||||
p.set(50);
|
||||
return appData.PluginsLink ? jassl(appData.PluginsLink) : window.Promise.resolve();
|
||||
return appData.PluginsLink ? loadScript(appData.PluginsLink) : window.Promise.resolve();
|
||||
})
|
||||
.then(() => {
|
||||
p.set(70);
|
||||
|
@ -130,7 +132,7 @@ window.__initAppData = data => {
|
|||
runMainBoot(true);
|
||||
throw e;
|
||||
})
|
||||
.then(() => jassl(appData.StaticEditorJsLink))
|
||||
.then(() => loadScript(appData.StaticEditorJsLink))
|
||||
.then(() => {
|
||||
if (window.CKEDITOR && window.__initEditor) {
|
||||
window.__initEditor();
|
||||
|
@ -153,7 +155,8 @@ window.__runBoot = () => {
|
|||
doc.location.replace('./?/NoCookie');
|
||||
}
|
||||
|
||||
require('Styles/@Boot.css');
|
||||
// require('Styles/@Boot.css');
|
||||
writeCSS('#rl-content{display:none;}.internal-hiddden{display:none !important;}');
|
||||
|
||||
if (app) {
|
||||
const layout = require('Html/Layout.html'),
|
||||
|
@ -170,7 +173,7 @@ window.__runBoot = () => {
|
|||
+ (options.mobile ? 'mobile' : 'no-mobile')
|
||||
+ (options.mobileDevice ? '-1' : '-0')
|
||||
+ '/'
|
||||
+ (window.__rlah ? window.__rlah() || '0' : '0')
|
||||
+ (getHash() || '0')
|
||||
+ '/'
|
||||
+ window.Math.random().toString().substr(2)
|
||||
+ '/';
|
||||
|
|
|
@ -13,7 +13,8 @@ export function jassl(src, async = false) {
|
|||
}
|
||||
|
||||
return new window.Promise((resolve, reject) => {
|
||||
const element = window.document.createElement('script');
|
||||
const doc = window.document,
|
||||
element = doc.createElement('script');
|
||||
|
||||
element.onload = () => {
|
||||
resolve(src);
|
||||
|
@ -26,7 +27,7 @@ export function jassl(src, async = false) {
|
|||
element.async = !!async;
|
||||
element.src = src;
|
||||
|
||||
window.document.body.appendChild(element);
|
||||
doc.body.appendChild(element);
|
||||
}) /* .then((s) => {
|
||||
|
||||
const found = s && rainloopCaches ? s.match(/rainloop\/v\/([^\/]+)\/static\//) : null;
|
||||
|
|
|
@ -37,9 +37,9 @@ const __get = (key) => {
|
|||
let result = null;
|
||||
if (SESS_STORAGE) {
|
||||
result = SESS_STORAGE.getItem(key) || null;
|
||||
} else if (WIN_STORAGE && window.JSON) {
|
||||
} else if (WIN_STORAGE) {
|
||||
const data =
|
||||
WIN_STORAGE.name && '{' === WIN_STORAGE.name.toString().substr(0, 1)
|
||||
WIN_STORAGE.name && '{' === WIN_STORAGE.name.toString()[0]
|
||||
? window.JSON.parse(WIN_STORAGE.name.toString())
|
||||
: null;
|
||||
result = data ? data[key] || null : null;
|
||||
|
@ -53,7 +53,7 @@ const __set = (key, value) => {
|
|||
SESS_STORAGE.setItem(key, value);
|
||||
} else if (WIN_STORAGE) {
|
||||
let data =
|
||||
WIN_STORAGE.name && '{' === WIN_STORAGE.name.toString().substr(0, 1)
|
||||
WIN_STORAGE.name && '{' === WIN_STORAGE.name.toString()[0]
|
||||
? JSON.parse(WIN_STORAGE.name.toString())
|
||||
: null;
|
||||
data = data || {};
|
||||
|
@ -102,7 +102,7 @@ export function clearHash() {
|
|||
* @returns {boolean}
|
||||
*/
|
||||
export function checkTimestamp() {
|
||||
if (timestamp() > getTimestamp() + 1000 * 60 * 60) {
|
||||
if (timestamp() > getTimestamp() + 3600000) {
|
||||
// 60m
|
||||
clearHash();
|
||||
return true;
|
||||
|
@ -111,4 +111,4 @@ export function checkTimestamp() {
|
|||
}
|
||||
|
||||
// init section
|
||||
setInterval(setTimestamp, 1000 * 60); // 1m
|
||||
setInterval(setTimestamp, 60000); // 1m
|
||||
|
|
Loading…
Reference in a new issue