Side navigation
Ticket #1292: etagdiff.txt
File etagdiff.txt, 1.8 KB (added by Chainfire, June 13, 2007 01:35PM UTC)
Etag patch vs jquery-1.1.3a
--- jquery-1.1.3a.js Wed Jun 13 15:02:50 2007
+++ jquery.js Wed Jun 13 15:23:36 2007
@@ -4228,6 +4228,8 @@
// Last-Modified header cache for next request
lastModified: {},
+ // Etag header cache for next request
+ eTag: {},
/**
* Load a remote page using an HTTP request.
@@ -4386,10 +4388,20 @@
if ( s.data )
xml.setRequestHeader("Content-Type", s.contentType);
- // Set the If-Modified-Since header, if ifModified mode.
- if ( s.ifModified )
- xml.setRequestHeader("If-Modified-Since",
- jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
+ // Set the If-Modified-Since and If-None-Match headers, if ifModified mode.
+ if ( s.ifModified ) {
+ if (jQuery.eTag[s.url]) {
+ xml.setRequestHeader("If-None-Match", jQuery.eTag[s.url]);
+
+ // 1-1-1970 should NOT be sent if there is an eTag available
+ if (jQuery.lastModified[s.url]) {
+ xml.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
+ }
+ } else {
+ xml.setRequestHeader("If-Modified-Since",
+ jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
+ }
+ }
// Set header so the called script knows that it's an XMLHttpRequest
xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");
@@ -4427,6 +4439,15 @@
if ( s.ifModified && modRes )
jQuery.lastModified[s.url] = modRes;
+
+ // Cache Etag header, if ifModified mode.
+ var etagRes;
+ try {
+ etagRes = xml.getResponseHeader("Etag");
+ } catch(e) {} // swallow exception thrown by FF if header is not available
+
+ if ( s.ifModified && etagRes )
+ jQuery.eTag[s.url] = etagRes;
// process the data (runs the xml through httpData regardless of callback)
var data = jQuery.httpData( xml, s.dataType );
Download in other formats:
Original Format
File etagdiff.txt, 1.8 KB (added by Chainfire, June 13, 2007 01:35PM UTC)
Etag patch vs jquery-1.1.3a
--- jquery-1.1.3a.js Wed Jun 13 15:02:50 2007
+++ jquery.js Wed Jun 13 15:23:36 2007
@@ -4228,6 +4228,8 @@
// Last-Modified header cache for next request
lastModified: {},
+ // Etag header cache for next request
+ eTag: {},
/**
* Load a remote page using an HTTP request.
@@ -4386,10 +4388,20 @@
if ( s.data )
xml.setRequestHeader("Content-Type", s.contentType);
- // Set the If-Modified-Since header, if ifModified mode.
- if ( s.ifModified )
- xml.setRequestHeader("If-Modified-Since",
- jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
+ // Set the If-Modified-Since and If-None-Match headers, if ifModified mode.
+ if ( s.ifModified ) {
+ if (jQuery.eTag[s.url]) {
+ xml.setRequestHeader("If-None-Match", jQuery.eTag[s.url]);
+
+ // 1-1-1970 should NOT be sent if there is an eTag available
+ if (jQuery.lastModified[s.url]) {
+ xml.setRequestHeader("If-Modified-Since", jQuery.lastModified[s.url]);
+ }
+ } else {
+ xml.setRequestHeader("If-Modified-Since",
+ jQuery.lastModified[s.url] || "Thu, 01 Jan 1970 00:00:00 GMT" );
+ }
+ }
// Set header so the called script knows that it's an XMLHttpRequest
xml.setRequestHeader("X-Requested-With", "XMLHttpRequest");
@@ -4427,6 +4439,15 @@
if ( s.ifModified && modRes )
jQuery.lastModified[s.url] = modRes;
+
+ // Cache Etag header, if ifModified mode.
+ var etagRes;
+ try {
+ etagRes = xml.getResponseHeader("Etag");
+ } catch(e) {} // swallow exception thrown by FF if header is not available
+
+ if ( s.ifModified && etagRes )
+ jQuery.eTag[s.url] = etagRes;
// process the data (runs the xml through httpData regardless of callback)
var data = jQuery.httpData( xml, s.dataType );