首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >WebWorkers -新工作人员不断向服务器请求相同的脚本。

WebWorkers -新工作人员不断向服务器请求相同的脚本。
EN

Stack Overflow用户
提问于 2015-12-17 00:03:56
回答 1查看 180关注 0票数 2

在我的服务器上,我记录了以下内容:

代码语言:javascript
运行
复制
GET /js/workers/one.js 200 2.509 ms - 828
GET /js/workers/one.js 304 1.593 ms - -
GET /js/workers/one.js 304 0.499 ms - -
GET /js/workers/one.js 304 0.464 ms - -
GET /js/workers/one.js 304 1.101 ms - -

(注意200,然后是4304 s)

在我的前端代码中,有以下内容:

代码语言:javascript
运行
复制
  var myWorker = new Worker('/js/workers/one.js');

为什么我的前端不以某种方式缓存这个文件?每次我打电话给new Worker()它都会请求相同的文件.

解决这个问题的一种方法(可能)是将文件放在一个<script>标记中,如下所示:

代码语言:javascript
运行
复制
<script src="/js/workers/one.js"></script>

然而,这方面的问题是"importScripts“不能工作。

也许这个能行?

代码语言:javascript
运行
复制
if(typeof importScripts === 'function'){
    importScripts('https://cdnjs.cloudflare.com/ajax/libs/react/0.14.3/react.js');
    importScripts('https://cdnjs.cloudflare.com/ajax/libs/react/0.14.3/react-dom.js');
}

防止新工作人员()重新请求文件的最佳方法是什么?

更新:

如果我将js/workers.one.js文件放在如下的脚本标记中

代码语言:javascript
运行
复制
<script src="/js/workers/one"></script>

然后服务器执行以下操作:

代码语言:javascript
运行
复制
GET /js/workers/one.js 304 0.521 ms - -
GET /js/workers/one.js 304 0.605 ms - -
GET /js/workers/one.js 304 0.289 ms - -
GET /js/workers/one.js 304 0.300 ms - -
GET /js/workers/one.js 304 0.347 ms - -

(请留意5304 s)

所以它已经加载了,(不像以前有200个响应),但是新Worker()一直在请求它.

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-12-17 01:15:29

304状态码意味着您的浏览器确实缓存了文件,并被服务器显式地允许重用它。执行请求是因为缓存的版本由于某种原因被认为是陈腐,并且服务器必须是经验证

在为文件服务时,可以通过在响应中添加一些带有文件数据的http头来显式地指示其新鲜度生存期。您可以添加标题,在此日期/时间之后,响应被视为过时,例如:

代码语言:javascript
运行
复制
Expires: Thu, 17 Dec 2015 16:00:00 GMT

使用Cache-control标头和响应指令,您可以指示在响应的时间大于指定的秒数之后,响应将被视为无效:

代码语言:javascript
运行
复制
Cache-Control: max-age=600
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/34324442

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档