Merge pull request #335 from Irev-Dev/kurt/improve-caching-334

Improve browser caching with cache control header
This commit was merged in pull request #335.
This commit is contained in:
Kurt Hutten
2021-05-31 17:00:28 +10:00
committed by GitHub
8 changed files with 626 additions and 2759 deletions

View File

@@ -2,6 +2,7 @@ const { runCQ } = require('./runCQ')
const middy = require('middy') const middy = require('middy')
const { cors } = require('middy/middlewares') const { cors } = require('middy/middlewares')
const AWS = require('aws-sdk') const AWS = require('aws-sdk')
const tk = require('timekeeper')
const { const {
makeHash, makeHash,
checkIfAlreadyExists, checkIfAlreadyExists,
@@ -29,7 +30,7 @@ const stl = async (req, _context, callback) => {
const response = { const response = {
statusCode: 200, statusCode: 200,
body: JSON.stringify({ body: JSON.stringify({
url: getObjectUrl(params, s3), url: getObjectUrl(params, s3, tk),
consoleMessage: previousAsset.consoleMessage, consoleMessage: previousAsset.consoleMessage,
}), }),
} }
@@ -47,6 +48,7 @@ const stl = async (req, _context, callback) => {
key, key,
s3, s3,
params, params,
tk,
}) })
} }

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,8 @@
"aws-sdk": "^2.907.0", "aws-sdk": "^2.907.0",
"cors": "^2.8.5", "cors": "^2.8.5",
"middy": "^0.36.0", "middy": "^0.36.0",
"nanoid": "^3.1.20" "nanoid": "^3.1.20",
"timekeeper": "2.2.0"
}, },
"devDependencies": { "devDependencies": {
"aws-lambda-ric": "^1.0.0" "aws-lambda-ric": "^1.0.0"

View File

@@ -64,12 +64,24 @@ async function checkIfAlreadyExists(params, s3) {
} }
} }
function getObjectUrl(params, s3) { function getObjectUrl(params, s3, tk) {
const getTruncatedTime = () => {
const currentTime = new Date()
const d = new Date(currentTime)
d.setMinutes(Math.floor(d.getMinutes() / 10) * 10)
d.setSeconds(0)
d.setMilliseconds(0)
return d
}
const HALF_HOUR = 1800 const HALF_HOUR = 1800
return s3.getSignedUrl('getObject', { return tk.withFreeze(getTruncatedTime(), () =>
...params, s3.getSignedUrl('getObject', {
Expires: HALF_HOUR, ...params,
}) Expires: HALF_HOUR,
})
)
} }
function loggerWrap(handler) { function loggerWrap(handler) {
@@ -90,6 +102,7 @@ async function storeAssetAndReturnUrl({
key, key,
s3, s3,
params, params,
tk,
}) { }) {
if (error) { if (error) {
const response = { const response = {
@@ -114,16 +127,18 @@ async function storeAssetAndReturnUrl({
callback(null, response) callback(null, response)
return return
} }
const FiveDays = 432000
const storedRender = await s3 const storedRender = await s3
.putObject({ .putObject({
Bucket: process.env.BUCKET, Bucket: process.env.BUCKET,
Key: key, Key: key,
Body: buffer, Body: buffer,
CacheControl: `max-age=${FiveDays}`, // browser caching to stop downloads of the same part
Metadata: putConsoleMessageInMetadata(consoleMessage), Metadata: putConsoleMessageInMetadata(consoleMessage),
}) })
.promise() .promise()
console.log('stored object', storedRender) console.log('stored object', storedRender)
const url = getObjectUrl(params, s3) const url = getObjectUrl(params, s3, tk)
console.log('url', url) console.log('url', url)
const response = { const response = {
statusCode: 200, statusCode: 200,

View File

@@ -2,6 +2,7 @@ const { runScad, stlExport } = require('./runScad')
const middy = require('middy') const middy = require('middy')
const { cors } = require('middy/middlewares') const { cors } = require('middy/middlewares')
const AWS = require('aws-sdk') const AWS = require('aws-sdk')
const tk = require('timekeeper')
const { const {
makeHash, makeHash,
checkIfAlreadyExists, checkIfAlreadyExists,
@@ -53,7 +54,8 @@ const preview = async (req, _context, callback) => {
Bucket: process.env.BUCKET, Bucket: process.env.BUCKET,
Key: previousAssetStl.isAlreadyInBucket ? stlKey : key, Key: previousAssetStl.isAlreadyInBucket ? stlKey : key,
}, },
s3 s3,
tk
), ),
consoleMessage: consoleMessage:
previousAsset.consoleMessage || previousAssetPng.consoleMessage, previousAsset.consoleMessage || previousAssetPng.consoleMessage,
@@ -74,6 +76,7 @@ const preview = async (req, _context, callback) => {
key, key,
s3, s3,
params, params,
tk,
}) })
} }
@@ -96,7 +99,7 @@ const stl = async (req, _context, callback) => {
const response = { const response = {
statusCode: 200, statusCode: 200,
body: JSON.stringify({ body: JSON.stringify({
url: getObjectUrl({ ...params }, s3), url: getObjectUrl({ ...params }, s3, tk),
consoleMessage: previousAsset.consoleMessage, consoleMessage: previousAsset.consoleMessage,
}), }),
} }
@@ -113,6 +116,7 @@ const stl = async (req, _context, callback) => {
key: stlKey, key: stlKey,
s3, s3,
params, params,
tk,
}) })
} }

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,8 @@
"aws-sdk": "^2.907.0", "aws-sdk": "^2.907.0",
"cors": "^2.8.5", "cors": "^2.8.5",
"middy": "^0.36.0", "middy": "^0.36.0",
"nanoid": "^3.1.20" "nanoid": "^3.1.20",
"timekeeper": "2.2.0"
}, },
"devDependencies": { "devDependencies": {
"aws-lambda-ric": "^1.0.0" "aws-lambda-ric": "^1.0.0"

View File

@@ -13,18 +13,12 @@ const initCodeMap = {
// ^ first comment is used for download title (i.e "involute-donut.stl") // ^ first comment is used for download title (i.e "involute-donut.stl")
radius=3;
color(c="DarkGoldenrod")rotate_extrude()translate([20,0])circle(d=30); color(c="DarkGoldenrod")rotate_extrude()translate([20,0])circle(d=30);
donut(); color(c="hotpink")rotate_extrude()translate([20,0])offset(radius)offset(-radius)difference(){
module donut() { circle(d=34);
for(i=[1:360]){ translate([-200,-500])square([500,500]);
rotate(i*13.751)stick(20,i*1.351);
}
}
module stick(basewid, angl){
translate([basewid,0,0])rotate([angl,angl,angl*2])color(c="hotpink")hull(){
sphere(7);
translate([0,0,10])sphere(9);
}
}`, }`,
cadQuery: `# demo shaft coupler cadQuery: `# demo shaft coupler