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

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,8 @@
"aws-sdk": "^2.907.0",
"cors": "^2.8.5",
"middy": "^0.36.0",
"nanoid": "^3.1.20"
"nanoid": "^3.1.20",
"timekeeper": "2.2.0"
},
"devDependencies": {
"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
return s3.getSignedUrl('getObject', {
...params,
Expires: HALF_HOUR,
})
return tk.withFreeze(getTruncatedTime(), () =>
s3.getSignedUrl('getObject', {
...params,
Expires: HALF_HOUR,
})
)
}
function loggerWrap(handler) {
@@ -90,6 +102,7 @@ async function storeAssetAndReturnUrl({
key,
s3,
params,
tk,
}) {
if (error) {
const response = {
@@ -114,16 +127,18 @@ async function storeAssetAndReturnUrl({
callback(null, response)
return
}
const FiveDays = 432000
const storedRender = await s3
.putObject({
Bucket: process.env.BUCKET,
Key: key,
Body: buffer,
CacheControl: `max-age=${FiveDays}`, // browser caching to stop downloads of the same part
Metadata: putConsoleMessageInMetadata(consoleMessage),
})
.promise()
console.log('stored object', storedRender)
const url = getObjectUrl(params, s3)
const url = getObjectUrl(params, s3, tk)
console.log('url', url)
const response = {
statusCode: 200,

View File

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

File diff suppressed because it is too large Load Diff

View File

@@ -9,7 +9,8 @@
"aws-sdk": "^2.907.0",
"cors": "^2.8.5",
"middy": "^0.36.0",
"nanoid": "^3.1.20"
"nanoid": "^3.1.20",
"timekeeper": "2.2.0"
},
"devDependencies": {
"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")
radius=3;
color(c="DarkGoldenrod")rotate_extrude()translate([20,0])circle(d=30);
donut();
module donut() {
for(i=[1:360]){
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);
}
color(c="hotpink")rotate_extrude()translate([20,0])offset(radius)offset(-radius)difference(){
circle(d=34);
translate([-200,-500])square([500,500]);
}`,
cadQuery: `# demo shaft coupler