2015-12-17 2 views
2

На моем сервере я это вошло:WebWorkers - новый работник сохраняет запрашивающий же сценарий с сервера

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, а затем 4-304s)

в моей фронтальной коде есть заключается в следующем:

var myWorker = new Worker('/js/workers/one.js'); 

Почему мой интерфейсный кеш этого файла не так? Он держит запрашивающий тот же файл каждый раз, когда я называю new Worker() ...

один способ решить эту проблему (возможно) может быть поместить файл в <script> тег как так:

<script src="/js/workers/one.js"></script> 

проблемы с этим , однако, заключается в том, что «importScripts» не будет работать

возможно, это сработает?

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'); 
} 

Что является лучшим способом предотвратить новый рабочий() от повторного запроса файла?

UPDATE:

Если я поставил JS/файл workers.one.js в теге сценария как так

<script src="/js/workers/one"></script> 

тогда сервер делает это:

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 - - 

(уведомление 5 304s)

поэтому он уже загружен (в отличие от того, где был один ответ 200), но новый рабочий() ke eps с просьбой об этом ...

ответ

1

304 status code означает, что ваш браузер действительно имеет файл, кэшированный на самом деле и явно разрешен для повторного использования его сервером. Запрос выполняется, потому что кешированная версия считается stale по какой-либо причине и должна быть validated сервером.

При обслуживании файла вы можете явно указать его продолжительность жизни, добавив некоторые HTTP-заголовки в ответ с данными файла. Вы можете добавить Expires header с даты/времени, после которого ответ считается устаревшим, например:

Expires: Thu, 17 Dec 2015 16:00:00 GMT 

С Cache-control заголовка и max-age response directive вы можете указать, что ответ следует считать устаревшим после его возраст больше, чем указанное количество секунд:

Cache-Control: max-age=600 
Смежные вопросы