Permalink
Browse files

Caching assets only for production environment

Summary:
**Motivation**

In the context of a webview, one may extract assets (javascript or any types really), and relates to them through the html.

The packager `Server` serves this files correctly but also applies a cache based on time (a year). During development, this cache is actually bad as we need to re-iterate the process of editing/testing quickly.

I don't believe it is necessary to cache, and still wanted to make sure we would if process.env.NODE_ENV is 'production'.

**Test plan**

Run jest on impacted files:
```
node_modules/.bin/jest packager/react-packager/src/Server/__tests__/Server-test.js
```
Closes #10919

Differential Revision: D4226350

Pulled By: davidaurelio

fbshipit-source-id: d4bbff5b1a5b691aab197bcddb8fa9d2e43caa16
  • Loading branch information...
grabcode authored and Facebook Github Bot committed Nov 23, 2016
1 parent 35e75c8 commit d196ca70db5d05a40faf292dc19bebd31620b86e
@@ -354,7 +354,6 @@ describe('processRequest', () => {
server.processRequest(req, res);
jest.runAllTimers();
expect(res.setHeader).toBeCalledWith('Cache-Control', 'max-age=31536000');
expect(res.end).toBeCalledWith('i am image');
});
@@ -367,7 +366,6 @@ describe('processRequest', () => {
server.processRequest(req, res);
jest.runAllTimers();
expect(AssetServer.prototype.get).toBeCalledWith('imgs/a.png', 'ios');
expect(res.setHeader).toBeCalledWith('Cache-Control', 'max-age=31536000');
expect(res.end).toBeCalledWith('i am image');
});
@@ -381,7 +379,6 @@ describe('processRequest', () => {
server.processRequest(req, res);
jest.runAllTimers();
expect(AssetServer.prototype.get).toBeCalledWith('imgs/a.png', 'ios');
expect(res.setHeader).toBeCalledWith('Cache-Control', 'max-age=31536000');
expect(res.end).toBeCalledWith(mockData.slice(0, 4));
});
@@ -397,7 +394,6 @@ describe('processRequest', () => {
'imgs/\u{4E3B}\u{9875}/logo.png',
undefined
);
expect(res.setHeader).toBeCalledWith('Cache-Control', 'max-age=31536000');
expect(res.end).toBeCalledWith('i am image');
});
});
@@ -473,7 +473,9 @@ class Server {
data => {
// Tell clients to cache this for 1 year.
// This is safe as the asset url contains a hash of the asset.
res.setHeader('Cache-Control', 'max-age=31536000');
if (process.env.REACT_NATIVE_ENABLE_ASSET_CACHING === true) {
res.setHeader('Cache-Control', 'max-age=31536000');
}
res.end(this._rangeRequestMiddleware(req, res, data, assetPath));
process.nextTick(() => {
print(log(createActionEndEntry(processingAssetRequestLogEntry)), ['asset']);

0 comments on commit d196ca7

Please sign in to comment.