2015-09-15 13 views
0

Я пытаюсь реализовать ETag для запроса GET в угловом JS, До сих пор я видел https://github.com/forforf/angular-etag https://www.npmjs.com/package/angular-http-etag и restangular (сложный один но хорошо). Они все говорят, что это дает встроенную поддержку запроса GET, который, я думаю, означает, что мне не нужно ничего кодировать на стороне сервера (который находится в C# .NET).ETag для ГЭТ в угловых JS - мне нужно, чтобы проверить на стороне сервера

Я полагаю, что, ИЛИ, я должен использовать CacheCow или что-то, чтобы искать ETAG в заголовке и отправить ответ 304.

Как раз фона, я должен использовать ETAG вместо кеша (угловой), чтобы получать последние данные с сервера.

+0

Если вы когда-нибудь узнает ваше решение, пожалуйста, поделитесь – garrettmac

ответ

0

Я автор angular-http-etag, поэтому я могу говорить только о функциях этого модуля. Он украшает услугу Angular $http, чтобы вы могли указывать запросы, которые вы хотите кэшировать. Вот пример использования я обеспечиваю в readme.md:

angular 
    .module('myApp', [ 
    'http-etag' 
    ]) 
    .config(function (httpEtagProvider) { 
    httpEtagProvider 
     .defineCache('persistentCache', { 
     cacheService: 'localStorage' 
     }) 
    }) 

    .controller('MyCtrl', function ($http) { 
    var self = this 

    $http 
     .get('/my_data.json', { 
     etagCache: 'persistentCache' 
     }) 
     .success(function (data, status, headers, config, itemCache) { 
     // Modify the data from the server 
     data._fullName = data.first_name + ' ' + data.last_name 
     // Update the cache with the modified data 
     itemCache.set(data) 
     // Assign to controller property 
     self.fullName = data._fullName 
     }) 
     // Synchronous method called if request was previously cached 
     .cached(function (data, status, headers, config, itemCache) { 
     self.fullName = data._fullName 
     }) 
     .error(function (data, status) { 
     // 304: 'Not Modified'--Etag matched, cached data is fresh 
     if (status != 304) alert('Request error') 
     }) 
    }) 

Единственное, что требуется на стороне сервера, чтобы убедиться, что сервер посылает заголовок на ETag ответ. Вы можете найти информацию о том, как проверять заголовки ответов в Chrome здесь: https://developers.google.com/web/tools/chrome-devtools/profile/network-performance/resource-loading#view-details-for-a-single-resource

0

Ну, для определенного сервера необходимо поддерживать выпуск ETags и ASP.NET MVC или Web API по умолчанию. Вы должны использовать некоторую форму кэширования вывода на сервере.

Одним из таких проектов является CacheOutput Filip WOJ здесь

https://github.com/filipw/Strathweb.CacheOutput