Ejemplo n.º 1
0
        void SendAsset(Bundle bundle, IAsset asset)
        {
            response.ContentType = bundle.ContentType;

            var actualETag = "\"" + asset.Hash.ToHexString() + "\"";

            if (request.RawUrl.Contains(asset.Hash.ToHexString()))
            {
                HttpResponseUtil.CacheLongTime(response, actualETag);
            }
            else
            {
                HttpResponseUtil.NoCache(response);
            }

            var givenETag = request.Headers["If-None-Match"];

            if (givenETag == actualETag)
            {
                HttpResponseUtil.SendNotModified(response);
            }
            else
            {
                HttpResponseUtil.EncodeStreamAndAppendResponseHeaders(request, response);

                using (var stream = asset.OpenStream())
                {
                    stream.CopyTo(response.OutputStream);
                }
            }
        }
Ejemplo n.º 2
0
        void SendFile(IFile file)
        {
            HttpResponseUtil.EncodeStreamAndAppendResponseHeaders(request, response);
            response.Cache.SetCacheability(HttpCacheability.Public);
            response.Cache.SetExpires(DateTime.UtcNow.AddYears(1));
            response.Cache.SetMaxAge(new TimeSpan(365, 0, 0, 0));

            using (var stream = file.OpenRead())
            {
                stream.CopyTo(response.OutputStream);
            }
        }
Ejemplo n.º 3
0
        void SendBundle(Bundle bundle, string actualETag)
        {
            response.ContentType = bundle.ContentType;
            if (request.RawUrl.Contains(bundle.Hash.ToHexString()))
            {
                HttpResponseUtil.CacheLongTime(response, actualETag);
            }
            else
            {
                HttpResponseUtil.NoCache(response);
            }

            HttpResponseUtil.EncodeStreamAndAppendResponseHeaders(request, response);

            using (var assetStream = bundle.OpenStream())
            {
                assetStream.CopyTo(response.OutputStream);
            }
        }
Ejemplo n.º 4
0
 void SendNotModified(string actualETag)
 {
     HttpResponseUtil.CacheLongTime(response, actualETag); // Some browsers seem to require a reminder to keep caching?!
     response.StatusCode      = 304;                       // Not Modified
     response.SuppressContent = true;
 }