Skip to content

Commit 40d08d0

Browse files
authored
Merge pull request #721 from nyu-ossd-s20/cache_busting_quick_fix
Cache busting fix
2 parents 944280f + afd4119 commit 40d08d0

File tree

4 files changed

+28
-6
lines changed

4 files changed

+28
-6
lines changed

Gruntfile.js

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -83,8 +83,8 @@ module.exports = function(grunt) {
8383
options: {
8484
expand: true,
8585
flatten: true,
86-
helpers: ['<%= config.src %>/assets/js/translation.js'],
8786
assets: '<%= config.dist %>/assets',
87+
helpers: ['<%= config.src %>/assets/js/translation.js', '<%= config.src %>/assets/js/cache-busting.js'],
8888
layout: '<%= config.src %>/templates/layouts/default.hbs',
8989
data: [
9090
'<%= config.src %>/data/**/*.{json,yml}',
@@ -411,8 +411,8 @@ module.exports = function(grunt) {
411411
'requirejs:yuidoc_theme',
412412
'requirejs',
413413
'copy',
414-
'assemble',
415414
'optimize',
415+
'assemble',
416416
'file_append',
417417
'compress',
418418
'i18n',

src/assets/js/cache-busting.js

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
module.exports.register = function(Handlebars, options) {
2+
Handlebars.registerHelper('versionedAsset', function(options) {
3+
// node libraries
4+
const crypto = require('crypto');
5+
const path = require('path');
6+
const fs = require('fs');
7+
const filePath = options.fn(this);
8+
const hash = crypto.createHash('sha256');
9+
// creating full path from the root dir to the file
10+
const fullPath = path.join(__dirname, "../../..", "dist", filePath);
11+
let hashCode = "";
12+
hash.on('readable', () => {
13+
const data = hash.read();
14+
if (data) hashCode = data.toString('hex');
15+
})
16+
hash.write(fs.readFileSync(fullPath, function (err) { if (err) return 0 }).toString());
17+
hash.end();
18+
// creating a version string from first 6 hash characters
19+
hashCode = "/" + filePath + "?v=" + hashCode.substr(0, 6);
20+
return hashCode;
21+
});
22+
};

src/templates/layouts/default.hbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<meta name="viewport" content="width=device-width">
77
<meta name="description" content="p5.js a JS client-side library for creating graphic and interactive experiences, based on the core principles of Processing.">
88
<title tabindex="1">{{title}} | p5.js</title>
9-
<link rel="stylesheet" href="/{{assets}}/css/all.css?v=1.0.1">
9+
<link rel="stylesheet" href="{{#versionedAsset}}assets/css/all.css{{/versionedAsset}}">
1010
<link href="https://fonts.googleapis.com/css?family=Montserrat&display=swap" rel="stylesheet">
1111

1212
<link rel="shortcut icon" href="/{{assets}}/img/favicon.ico">
@@ -17,7 +17,7 @@
1717
<script src="/{{assets}}/js/vendor/ace-nc/ace.js"></script>
1818
<script src="/{{assets}}/js/vendor/ace-nc/mode-javascript.js"></script>
1919
<script src="/{{assets}}/js/vendor/prism.js"></script>
20-
<script src="/{{assets}}/js/init.js?v=1.0.1"></script>
20+
<script src="{{#versionedAsset}}assets/js/init.js{{/versionedAsset}}"></script>
2121

2222
{{#ifLowerCaseEquals language "zh-Hans"}}
2323
<script src="/{{assets}}/js/vendor/pangu.min.js"></script>

src/templates/pages/reference/index.hbs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -32,8 +32,8 @@ slug: reference/
3232
<script src="https://cdnjs.cloudflare.com/ajax/libs/underscore.js/1.8.3/underscore-min.js"></script>
3333
<script src="https://cdnjs.cloudflare.com/ajax/libs/backbone.js/1.3.3/backbone-min.js"></script>
3434
<script src="/reference/assets/js/require.min.js"></script>
35-
<script src="/assets/js/render.js"></script>
36-
<script src="/reference/assets/js/reference.js"></script>
35+
<script src="{{#versionedAsset}}assets/js/render.js{{/versionedAsset}}"></script>
36+
<script src="{{#versionedAsset}}reference/assets/js/reference.js{{/versionedAsset}}"></script>
3737

3838
<script>
3939

0 commit comments

Comments
 (0)