0

For UI libraries , i am currently using cloudfront, where i have list of js/css files, as shown below:

0b3fb6c9341da0e5.min.js
1d4c3d5cded23cb2.min.css
1f8c315a86fefd13.min.js
2e91a32ab37b51d5.min.css
3c2c0190729a5de6.min.css
05e03b1ae258b4cd.min.css
6b57aee2f30f846b.min.js
6e94559c187d5d00.min.css
7ec73ef718990b40.min.css
8ac01bbb7f05e0a9.min.css
8ecc22d878e7a93c.min.js
9a00d70cd5a8f544.min.css
9c985ebf75510b88.min.js
9cea63c67b1f5be1.min.js
9f5b4fa634590543.min.js
9fbf1ad9f03c2aea.min.js
34f252296c86892b.min.css
39ffcb4194a365fc.min.css
46f426bcfc9dd89c.min.css
52bf1c32f66e3366.min.css
74bfd02e310d0c96.min.css
84df93ace8f5ef4d.min.css
142be8c3821af955.min.js
203de59f43c37bf1.min.js
578c82bda81f22b0.min.js
618e47bf25693edd.min.js
760d38056678fd75.min.js
875c6c2b1d6050e5.min.js
6012e3e21c48364e.min.css
6048e657d7aa5b54.min.css
7351efd5ad3a8219.min.css
08183e329b2e2271.min.js
09511a5f22cca316.min.css
21042ac781e41609.min.js
27525a908ad9afa6.min.css
60389faa6bd7dd9c.min.js
76326bfb46c06d0f.min.js
22635695f659cee6.min.css
211850746383fd35.min.css
a6d3e29a3d37ea9b.min.js
a54a2ed744d894ca.min.js
aa6c83d100400291.min.css
ab374f067fa53248.min.js
ab612c7a907116a6.min.css
bc0c3159d13ffdaf.min.css
bd8afe179660ea2d.min.js
c765ce94b008b43a.min.css
cebd04bf55acaf98.min.css
cee566872b34f713.min.js
d8f1442c712a0ebd.min.js
d558c31995ff2df8.min.js
d6895ea382f230c4.min.js
da39a3ee5e6b4b0d.min.css
e3dbd06c2ca4b6f0.min.js
e64a562a726c1b03.min.css
e555a7200b70dcee.min.css
e42889a5f8827ba2.min.js
eca0f8862dcabafd.min.js
f0f87111323846b8.min.js
f1dfcf7b4fefa04b.min.js
f4f10343572d255f.min.js
f8ca1b73cca8a4e8.min.js
fc03b8795f0d7faa.min.js
fd4e563878f699ca.min.css
fe68b7820bc0cf4f.min.css
ClientLibs.js

where ClientLibs.js looks something like below:

var basePath = 'https://xwsxwwxxwx.cloudfront.net/,
  filesFingerPrint = [ 
0b3fb6c9341da0e5.min.js,
1d4c3d5cded23cb2.min.css,
1f8c315a86fefd13.min.js,
2e91a32ab37b51d5.min.css,
3c2c0190729a5de6.min.css,
05e03b1ae258b4cd.min.css,
6b57aee2f30f846b.min.js,
6e94559c187d5d00.min.css,
7ec73ef718990b40.min.css,
8ac01bbb7f05e0a9.min.css,
8ecc22d878e7a93c.min.js,
9a00d70cd5a8f544.min.css,
9c985ebf75510b88.min.js,
9cea63c67b1f5be1.min.js,
9f5b4fa634590543.min.js,
9fbf1ad9f03c2aea.min.js,
34f252296c86892b.min.css,
39ffcb4194a365fc.min.css,
46f426bcfc9dd89c.min.css,
52bf1c32f66e3366.min.css,
74bfd02e310d0c96.min.css,
84df93ace8f5ef4d.min.css,
142be8c3821af955.min.js,
203de59f43c37bf1.min.js,
578c82bda81f22b0.min.js,
618e47bf25693edd.min.js,
760d38056678fd75.min.js,
875c6c2b1d6050e5.min.js,
6012e3e21c48364e.min.css,
6048e657d7aa5b54.min.css,
7351efd5ad3a8219.min.css,
08183e329b2e2271.min.js,
09511a5f22cca316.min.css,
21042ac781e41609.min.js,
27525a908ad9afa6.min.css,
60389faa6bd7dd9c.min.js,
76326bfb46c06d0f.min.js,
22635695f659cee6.min.css,
211850746383fd35.min.css,
a6d3e29a3d37ea9b.min.js,
a54a2ed744d894ca.min.js,
aa6c83d100400291.min.css,
ab374f067fa53248.min.js,
ab612c7a907116a6.min.css,
bc0c3159d13ffdaf.min.css,
bd8afe179660ea2d.min.js,
c765ce94b008b43a.min.css,
cebd04bf55acaf98.min.css,
cee566872b34f713.min.js,
d8f1442c712a0ebd.min.js,
d558c31995ff2df8.min.js,
d6895ea382f230c4.min.js,
da39a3ee5e6b4b0d.min.css,
e3dbd06c2ca4b6f0.min.js,
e64a562a726c1b03.min.css,
e555a7200b70dcee.min.css,
e42889a5f8827ba2.min.js,
eca0f8862dcabafd.min.js,
f0f87111323846b8.min.js,
f1dfcf7b4fefa04b.min.js,
f4f10343572d255f.min.js,
f8ca1b73cca8a4e8.min.js,
fc03b8795f0d7faa.min.js,
fd4e563878f699ca.min.css,
fe68b7820bc0cf4f.min.css],
jsFilesList = [],
cssFilesList = [];

_.each(filesFingerPrint, function (compName) {
  if (compName.split('.min.')[1] === 'js') {
    jsFilesList.push(basePath + "/" + compName);
  } else {
    cssFilesList.push(basePath + "/" + compName);
  }
});

head.load(cssFilesList);
head.load(jsFilesList, function() {
   T.Analytic.init({
    el: '#el',
    leftRailElementClass: '.rail-item-list',
    visible: true
  });
});

ClientLibs.js is first file which get download at browser, which then loads all file js/css. To load files i in execution order i am using head.js. These js/css file name are fingerprint which changes when content of any file change.

Now issue is after downloading of ClientLibs.js, each of above js/css files are getting download each time on browser, and browser is not serving the cached file. Logically if filename do not changes then browser cached file should be served, which is not happening. Due to which downloading each file takes around 3 sec and my UI is getting slow. Delay can be expected for first time when file not available in browser cache , but from next time onward, cached file must be delivered (in no name change).

Below is request body which is being sent from browser:

curl "https://xwsxwwxxwx.cloudfront.net/9cea63c67b1f5be1.min.js" -H "Referer: http://mycompany-wx-1.corp.company.com:4502/analytic.html" -H "User-Agent: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36" --compressed

Below is response header:

accept-ranges: bytes 
age: 1266 
content-length: 81991 
content-type: application/javascript 
date: Tue, 17 Jul 2018 07:11:38 GMT 
etag: "17ac8fca7fb779f314c5569023847856" 
last-modified: Tue, 17 Jul 2018 06:46:05 GMT 
server: AmazonS3 status: 304 
via: 1.1 289241c3afsasab6a8f02210.cloudfront.net (CloudFront)
x-amz-cf-id: IdcQaC_weDOwqa-WlFWaQxvB-rfkJZ5xwopBT3BCVD7BT_Q==
x-cache: Hit from cloudfront

Why my request is going to cloudfront every time and downloading same file everytime rather than browser serving cached file?

KCS
  • 2,937
  • 4
  • 22
  • 32
  • Possible duplicate of [How to control web page caching, across all browsers?](https://stackoverflow.com/questions/49547/how-to-control-web-page-caching-across-all-browsers) – symcbean Jul 17 '18 at 08:26
  • There is an awful lot wrong with this question. We can't see from the information you've provided if the browser really is downloading the file or generating a 304 response. The only caching information provided is an eTag - which flies in the face of cachebusting URLs. – symcbean Jul 17 '18 at 08:29
  • its giving 200 as response code. – KCS Jul 17 '18 at 08:31
  • It probably is when you ask with curl: curl doesn't have a cache. – symcbean Jul 17 '18 at 08:36
  • i copied from dev console as curl format – KCS Jul 17 '18 at 08:37
  • Please show us all HTTP headers of a request that you expect to be cached but it isn't as well. – Leonid Vasilev Jul 19 '18 at 12:00

0 Answers0