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:
@@ -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,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
1669
app/api/src/docker/cadquery/package-lock.json
generated
1669
app/api/src/docker/cadquery/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||||
|
|||||||
@@ -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,
|
||||||
|
|||||||
@@ -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,
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
1655
app/api/src/docker/openscad/package-lock.json
generated
1655
app/api/src/docker/openscad/package-lock.json
generated
File diff suppressed because it is too large
Load Diff
@@ -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"
|
||||||
|
|||||||
@@ -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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user