public void TestWithKey() { NameValueCollection nameValues = new NameValueCollection(); nameValues.Add("e", "99"); nameValues.Add("a", "16"); nameValues.Add("c", "88"); CacheKeyBuilder builder = new CacheKeyBuilder(nameValues, "bb"); Assert.AreEqual(builder.ServiceId, "bb"); Assert.AreEqual(builder.CacheKey, "a16c88e99"); }
public void TestJqueryParametersNotIncludedInCacheKey() { NameValueCollection nameValues = new NameValueCollection(); nameValues.Add("a", "9"); nameValues.Add(CacheKeyBuilder.ParameterAjaxCallId, "7"); CacheKeyBuilder builder = new CacheKeyBuilder(nameValues, "b"); Assert.IsFalse(builder.CacheKey.Contains(CacheKeyBuilder.ParameterAjaxCallId)); Assert.IsFalse(builder.CacheKey.Contains("7")); Assert.IsFalse(builder.CacheKey.Contains("8")); }
public void TestNoCache() { // No cache NameValueCollection nameValues = new NameValueCollection(); nameValues.Add("nocache", ""); nameValues.Add(CacheKeyBuilder.ParameterAjaxCallId, "7"); CacheKeyBuilder builder = new CacheKeyBuilder(nameValues, "b"); Assert.IsFalse(builder.CanJsonBeCached); // Can cache nameValues = new NameValueCollection(); nameValues.Add(CacheKeyBuilder.ParameterAjaxCallId, "7"); builder = new CacheKeyBuilder(nameValues, "b"); Assert.IsTrue(builder.CanJsonBeCached); }
public void Respond(bool isServiceCachable, string serviceId) { this.isServiceCachable = isServiceCachable; absoluteUri = Context.Request.Url.AbsoluteUri; try { NameValueCollection parameters = Context.Request.QueryString; keyBuilder = new CacheKeyBuilder(parameters, serviceId); byte[] json = null; if (isServiceCachable && keyBuilder.CanJsonBeCached) { json = WebCache.GetJson(keyBuilder.ServiceId, keyBuilder.CacheKey); } if (JsonUnit.IsJsonOk(json) == false) { json = GetJsonFromCoreWs(); } WriteResponse(json); } catch (Exception ex) { ExceptionLogger.LogException(ex, absoluteUri); Context.Response.StatusCode = (int)HttpStatusCode.InternalServerError; Context.Response.Write(ex.Message + " STACK=" + ex.StackTrace + " URL=" + absoluteUri); Context.Response.ContentType = ContentTypeJson; Context.Response.Flush(); } }