Skip to content

Commit

Permalink
update(other): 🧩 update
Browse files Browse the repository at this point in the history
improve http compress
  • Loading branch information
truong committed Jan 29, 2024
1 parent e08d9e9 commit 5058e36
Show file tree
Hide file tree
Showing 14 changed files with 302 additions and 147 deletions.
46 changes: 42 additions & 4 deletions server/dist/index.fastify.js
Original file line number Diff line number Diff line change
Expand Up @@ -37,10 +37,13 @@ var _cors = require('cors')
var _cors2 = _interopRequireDefault(_cors)
var _fastify = require('fastify')
var _fastify2 = _interopRequireDefault(_fastify)
var _fs = require('fs')
var _fs2 = _interopRequireDefault(_fs)
var _path = require('path')
var _path2 = _interopRequireDefault(_path)
var _servestatic = require('serve-static')
var _servestatic2 = _interopRequireDefault(_servestatic)
var _zlib = require('zlib')
var _PortHandler = require('../../config/utils/PortHandler')
var _constants = require('./constants')
var _serverconfig = require('./server.config')
Expand Down Expand Up @@ -129,16 +132,51 @@ const startServer = async () => {
*/

if (isStatic) {
const filePath = _path2.default.resolve(
const staticPath = _path2.default.resolve(
__dirname,
`../../dist/${req.url}`
)

if (_InitEnv.ENV !== 'development') {
if (_InitEnv.ENV === 'development') {
res.setHeader('Cache-Control', 'public, max-age=31556952')
_SendFile2.default.call(void 0, staticPath, res)
} else {
try {
const contentEncoding = (() => {
const tmpHeaderAcceptEncoding =
req.headers['accept-encoding'] || ''
if (tmpHeaderAcceptEncoding.indexOf('br') !== -1) return 'br'
else if (tmpHeaderAcceptEncoding.indexOf('gzip') !== -1)
return 'gzip'
return ''
})()

const body = (() => {
const content = _fs2.default.readFileSync(staticPath)
const tmpBody =
contentEncoding === 'br'
? _zlib.brotliCompressSync.call(void 0, content)
: contentEncoding === 'gzip'
? _zlib.gzipSync.call(void 0, content)
: content

return tmpBody
})()

const mimeType = _servestatic2.default.mime.lookup(staticPath)

res
.writeHead(200, {
'cache-control': 'public, max-age=31556952',
'content-encoding': contentEncoding,
'content-type': mimeType,
})
.end(body)
} catch (err) {
res.statusCode = 404
res.end('File not found')
}
}

_SendFile2.default.call(void 0, filePath, res)
} else {
next()
}
Expand Down
93 changes: 46 additions & 47 deletions server/dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -35,8 +35,13 @@ var _cors = require('cors')
var _cors2 = _interopRequireDefault(_cors)
var _express = require('express')
var _express2 = _interopRequireDefault(_express)
var _fs = require('fs')
var _fs2 = _interopRequireDefault(_fs)
var _path = require('path')
var _path2 = _interopRequireDefault(_path)
var _servestatic = require('serve-static')
var _servestatic2 = _interopRequireDefault(_servestatic)
var _zlib = require('zlib')
var _PortHandler = require('../../config/utils/PortHandler')
var _constants = require('./constants')
var _CookieHandler = require('./utils/CookieHandler')
Expand All @@ -51,11 +56,6 @@ var _DetectRedirect2 = _interopRequireDefault(_DetectRedirect)
var _DetectStaticExtension = require('./utils/DetectStaticExtension')
var _DetectStaticExtension2 = _interopRequireDefault(_DetectStaticExtension)
var _InitEnv = require('./utils/InitEnv')
var _fs = require('fs')
var _fs2 = _interopRequireDefault(_fs)
var _zlib = require('zlib')
var _servestatic = require('serve-static')
var _servestatic2 = _interopRequireDefault(_servestatic)

const ServerConfig = _nullishCoalesce(
_optionalChain([
Expand Down Expand Up @@ -132,50 +132,49 @@ const startServer = async () => {
__dirname,
`../../dist/${req.url}`
)
res.status(200).set('Cache-Control', 'public, max-age=31556952')

if (_InitEnv.ENV === 'development') {
try {
res.sendFile(staticPath)
} catch (err) {
res.status(404).send('File not found')
}
} else {
const enableContentEncoding = Boolean(
req.headers['accept-encoding']
)
const contentEncoding = (() => {
const tmpHeaderAcceptEncoding =
req.headers['accept-encoding'] || ''
if (tmpHeaderAcceptEncoding.indexOf('br') !== -1) return 'br'
else if (tmpHeaderAcceptEncoding.indexOf('gzip') !== -1)
return 'gzip'
return ''
})()
res.set({
'Content-Encoding': contentEncoding,
})
const body = (() => {
const content = _fs2.default.readFileSync(
_path2.default.resolve(__dirname, `../../dist/${req.url}`)
)
const tmpBody =
contentEncoding === 'br'
? _zlib.brotliCompressSync.call(void 0, content)
: contentEncoding === 'gzip'
? _zlib.gzipSync.call(void 0, content)
: content

return tmpBody
})()

const mimeType = _servestatic2.default.mime.lookup(staticPath)

res
.set({
'Content-type': mimeType,
try {
if (_InitEnv.ENV === 'development') {
res
.status(200)
.set('Cache-Control', 'public, max-age=31556952')
.sendFile(staticPath)
} else {
const contentEncoding = (() => {
const tmpHeaderAcceptEncoding =
req.headers['accept-encoding'] || ''
if (tmpHeaderAcceptEncoding.indexOf('br') !== -1) return 'br'
else if (tmpHeaderAcceptEncoding.indexOf('gzip') !== -1)
return 'gzip'
return ''
})()
res.set({
'Content-Encoding': contentEncoding,
})
.send(body)
const body = (() => {
const content = _fs2.default.readFileSync(staticPath)
const tmpBody =
contentEncoding === 'br'
? _zlib.brotliCompressSync.call(void 0, content)
: contentEncoding === 'gzip'
? _zlib.gzipSync.call(void 0, content)
: content

return tmpBody
})()

const mimeType = _servestatic2.default.mime.lookup(staticPath)

res
.status(200)
.set('Cache-Control', 'public, max-age=31556952')
.set({
'Content-type': mimeType,
})
.send(body)
}
} catch (e) {
res.status(404).send('File not found!')
}
} else {
next()
Expand Down
50 changes: 39 additions & 11 deletions server/dist/middlewares/uws/DetectStatic.js
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ var _path2 = _interopRequireDefault(_path)
var _servestatic = require('serve-static')
var _servestatic2 = _interopRequireDefault(_servestatic)

var _constants = require('../../constants')
var _zlib = require('zlib')
var _serverconfig = require('../../server.config')
var _serverconfig2 = _interopRequireDefault(_serverconfig)
var _DetectStaticExtensionuws = require('../../utils/DetectStaticExtension.uws')
Expand All @@ -33,22 +33,50 @@ const DetectStaticMiddle = (res, req) => {
_serverconfig2.default.crawler &&
!_InitEnv.PROCESS_ENV.IS_REMOTE_CRAWLER
) {
const filePath = _path2.default.resolve(
const staticPath = _path2.default.resolve(
__dirname,
`../../../../dist/${req.getUrl()}`
)

if (_constants.ENV !== 'development') {
res.writeHeader('Cache-Control', 'public, max-age=31556952')
}

try {
const mimeType = _servestatic2.default.mime.lookup(filePath)
const body = _fs2.default.readFileSync(filePath)
res.writeHeader('Content-Type', mimeType).end(body)
if (_InitEnv.ENV === 'development') {
const body = _fs2.default.readFileSync(staticPath)
const mimeType = _servestatic2.default.mime.lookup(staticPath)
res
.writeStatus('200')
.writeHeader('Cache-Control', 'public, max-age=31556952')
.writeHeader('Content-Type', mimeType)
.end(body)
} else {
const contentEncoding = (() => {
const tmpHeaderAcceptEncoding = req.getHeader('accept-encoding') || ''
if (tmpHeaderAcceptEncoding.indexOf('br') !== -1) return 'br'
else if (tmpHeaderAcceptEncoding.indexOf('gzip') !== -1) return 'gzip'
return ''
})()
const body = (() => {
const content = _fs2.default.readFileSync(staticPath)
const tmpBody =
contentEncoding === 'br'
? _zlib.brotliCompressSync.call(void 0, content)
: contentEncoding === 'gzip'
? _zlib.gzipSync.call(void 0, content)
: content

return tmpBody
})()

const mimeType = _servestatic2.default.mime.lookup(staticPath)

res
.writeStatus('200')
.writeHeader('Cache-Control', 'public, max-age=31556952')
.writeHeader('Content-Encoding', contentEncoding)
.writeHeader('Content-Type', mimeType)
.end(body)
}
} catch (e) {
res.writeStatus('404')
res.end('File not found')
res.writeStatus('404').end('File not found')
}

res.writableEnded = true
Expand Down
10 changes: 5 additions & 5 deletions server/dist/puppeteer-ssr/index.uws.js
Original file line number Diff line number Diff line change
Expand Up @@ -156,6 +156,11 @@ const puppeteerSSRService = (async () => {
})
}
_app.get('/*', async function (res, req) {
_DetectStatic2.default.call(void 0, res, req)

// NOTE - Check if static will send static file
if (res.writableEnded) return

// NOTE - Check and create base url
if (!_InitEnv.PROCESS_ENV.BASE_URL)
_InitEnv.PROCESS_ENV.BASE_URL = `${
Expand All @@ -164,11 +169,6 @@ const puppeteerSSRService = (async () => {
: 'http'
}://${req.getHeader('host')}`

_DetectStatic2.default.call(void 0, res, req)

// NOTE - Check if static will send static file
if (res.writableEnded) return

// NOTE - Detect, setup BotInfo and LocaleInfo
_DetectBot2.default.call(void 0, res, req)
_DetectLocale2.default.call(void 0, res, req)
Expand Down
8 changes: 7 additions & 1 deletion server/dist/puppeteer-ssr/utils/ISRHandler.js
Original file line number Diff line number Diff line change
Expand Up @@ -189,6 +189,7 @@ const ISRHandler = async ({ isFirstRequest, url }) => {
}

let html = ''
let isForceToOptimizeAndCompress = false
let status = 200
const specialInfo = _nullishCoalesce(
_optionalChain([
Expand All @@ -204,6 +205,7 @@ const ISRHandler = async ({ isFirstRequest, url }) => {
)

if (_serverconfig2.default.crawler) {
isForceToOptimizeAndCompress = true
const requestParams = {
startGenerating,
isFirstRequest: true,
Expand Down Expand Up @@ -357,7 +359,11 @@ const ISRHandler = async ({ isFirstRequest, url }) => {
)

try {
html = await optimizeHTMLContentPool.exec('optimizeContent', [html, true])
html = await optimizeHTMLContentPool.exec('optimizeContent', [
html,
true,
isForceToOptimizeAndCompress,
])
} catch (err) {
_ConsoleHandler2.default.error(err)
return
Expand Down
10 changes: 5 additions & 5 deletions server/dist/puppeteer-ssr/utils/OptimizeHtml.worker.js
Original file line number Diff line number Diff line change
Expand Up @@ -32,10 +32,10 @@ var _InitEnv = require('../../utils/InitEnv')

var _constants3 = require('../constants')

const compressContent = (html) => {
const compressContent = (html, isForce = false) => {
if (!html) return ''
else if (
_constants3.DISABLE_COMPRESS_HTML ||
(_constants3.DISABLE_COMPRESS_HTML && !isForce) ||
_constants.POWER_LEVEL === _constants.POWER_LEVEL_LIST.ONE
)
return html
Expand All @@ -58,19 +58,19 @@ const compressContent = (html) => {
return html
} // compressContent

const optimizeContent = (html, isFullOptimize = false) => {
const optimizeContent = (html, isFullOptimize = false, isForce = false) => {
if (!html) return ''
if (Buffer.isBuffer(html))
html = _zlib.brotliDecompressSync.call(void 0, html).toString()

html = html.replace(_constants3.regexOptimizeForScriptBlockPerformance, '')

if (_constants3.DISABLE_OPTIMIZE) return html
if (_constants3.DISABLE_OPTIMIZE && !isForce) return html

html = html.replace(_constants3.regexOptimizeForPerformanceNormally, '')

if (
_constants3.DISABLE_DEEP_OPTIMIZE ||
(_constants3.DISABLE_DEEP_OPTIMIZE && !isForce) ||
_constants.POWER_LEVEL === _constants.POWER_LEVEL_LIST.ONE
)
return html
Expand Down
Loading

0 comments on commit 5058e36

Please sign in to comment.