Loading ...
Sorry, an error occurred while loading the content.

Compressed JSON

Expand Messages
  • msf157
    Is it posible to compress JSON files, gzip or something else? Am using JSON-PHP to send JSON files to my AJAJ javascript front end. When I turn on GZIP
    Message 1 of 7 , Mar 7, 2006
    • 0 Attachment
      Is it posible to compress JSON files, gzip or something else? Am
      using JSON-PHP to send JSON files to my AJAJ javascript front end.
      When I turn on GZIP compression the javascript fails to parse the
      file. I am using the open-source JS JSON parser availible from
      JSON.org.

      I really need to compress the JSON files since I am pulling several
      large files. Compressed XML will actually be smaller if JSON must be
      sent uncompressed, and I hate XML. Help!
    • henrik hjelte
      ... Not that I ve tried compressing JSON, or have any experience with either PHP or JSON-PHP but I m sure it s possible. As a fact, I will eat my hat if your
      Message 2 of 7 , Mar 7, 2006
      • 0 Attachment
        On tis, 2006-03-07 at 14:43 +0000, msf157 wrote:
        > Is it posible to compress JSON files, gzip or something else? Am
        > using JSON-PHP to send JSON files to my AJAJ javascript front end.
        > When I turn on GZIP compression the javascript fails to parse the
        > file. I am using the open-source JS JSON parser availible from
        > JSON.org.
        Not that I've tried compressing JSON, or have any experience
        with either PHP or JSON-PHP but I'm sure it's possible.

        As a fact, I will eat my hat if your problems has anything to do with
        JSON.

        Is the compressed JSON uncompressed before it gets to the javascript
        parser?
        /Henrik Hjelte
      • msf157
        I am sure this has nothing to do with the actual JSON files, but I am sending the files to the browser in gzip form and they should automagiacally decompress,
        Message 3 of 7 , Mar 7, 2006
        • 0 Attachment
          I am sure this has nothing to do with the actual JSON files, but I
          am sending the files to the browser in gzip form and they should
          automagiacally decompress, before going to the parser. For some
          reason this is not hapening as it does with XML and I am unsure what
          the proper way to do this is.

          Is there a javascript command to force decompression? Are the
          normal gzip headers conflicting with the parser? Do any JSON
          parsers support gzip? Is there a better way to do this?

          -Marc

          --- In json@yahoogroups.com, henrik hjelte <henrik@...> wrote:
          >
          > On tis, 2006-03-07 at 14:43 +0000, msf157 wrote:
          > > Is it posible to compress JSON files, gzip or something else?
          Am
          > > using JSON-PHP to send JSON files to my AJAJ javascript front
          end.
          > > When I turn on GZIP compression the javascript fails to parse
          the
          > > file. I am using the open-source JS JSON parser availible from
          > > JSON.org.
          > Not that I've tried compressing JSON, or have any experience
          > with either PHP or JSON-PHP but I'm sure it's possible.
          >
          > As a fact, I will eat my hat if your problems has anything to do
          with
          > JSON.
          >
          > Is the compressed JSON uncompressed before it gets to the
          javascript
          > parser?
          > /Henrik Hjelte
          >
        • MPCM
          The communication itself should be doing the compression and undoing before it gets anywhere near the js. Is this what you are doing? Or are you sending a
          Message 4 of 7 , Mar 7, 2006
          • 0 Attachment
            The communication itself should be doing the compression and undoing before
            it gets anywhere near the js.

            Is this what you are doing? Or are you sending a gzip'd output and
            expecting the browser to know how to decode it?

            --
            Matt


            [Non-text portions of this message have been removed]
          • henrik hjelte
            ... I think you have to set the proper value of the http response content-type, to a value like text/gzip or text/zip. It sort of depends on the browser if I
            Message 5 of 7 , Mar 7, 2006
            • 0 Attachment
              On tis, 2006-03-07 at 16:18 +0000, msf157 wrote:
              > I am sure this has nothing to do with the actual JSON files, but I
              > am sending the files to the browser in gzip form and they should
              > automagiacally decompress, before going to the parser. For some
              > reason this is not hapening as it does with XML and I am unsure what
              > the proper way to do this is.

              I think you have to set the proper value of the http response
              content-type, to a value like text/gzip or text/zip. It sort of
              depends on the browser if I remember.

              /Henrik Hjelte
            • Tom Metro
              ... Yes, though it looks like Content-Type is unchanged, but a Content-Encoding header needs to be added. Here are a couple of articles on this that I found
              Message 6 of 7 , Mar 7, 2006
              • 0 Attachment
                henrik hjelte wrote:
                >> ...I am sending the files to the browser in gzip form and they should
                >> automagiacally decompress, before going to the parser.
                >
                > I think you have to set the proper value of the http response
                > content-type, to a value like text/gzip or text/zip.

                Yes, though it looks like Content-Type is unchanged, but a
                Content-Encoding header needs to be added.

                Here are a couple of articles on this that I found when searching for
                "HTTP Compression":

                http://www.webreference.com/internet/software/servers/http/compression/

                Most newer browsers since 1998/1999 have been equipped to support the
                HTTP 1.1 standard known as "content-encoding." ... Essentially the
                browser indicates to the server that it can accept "content encoding"
                and if the server is capable it will then compress the data and
                transmit it.

                http://www.websiteoptimization.com/speed/tweak/compress/

                HTTP compression uses public domain compression algorithms, like gzip
                and compress, to compress XHTML, JavaScript, CSS, and other text files
                at the server. This standards-based method of delivering compressed
                content is built into HTTP 1.1, and most modern browsers that support
                HTTP 1.1 support ZLIB inflation of deflated documents. In other words,
                they can decompress compressed files automatically...


                So the likely problem is that your server isn't sending the correct
                Content-Encoding header. Also note that your server is supposed to be
                looking at the request headers and *only* sending compressed content if
                the client says it can handle it.

                Whether all this magic is supported by the XMLHttpRequest() API is
                another matter, but being a documented feature of HTTP 1.1 it seems
                likely that the capability is implemented in the lower layer protocol API.

                -Tom

                --
                Tom Metro
                Venture Logic, Newton, MA, USA
                "Enterprise solutions through open source."
                Professional Profile: http://tmetro.venturelogic.com/
              • msf157
                I finally got it working. The headers were being added correctly but the encoding was not. I switched methods of compression and it works perfectly. The
                Message 7 of 7 , Mar 9, 2006
                • 0 Attachment
                  I finally got it working. The headers were being added correctly
                  but the encoding was not. I switched methods of compression and it
                  works perfectly. The browser/platform should auto-decompress on the
                  other end if the headers are set correctly. There should be no need
                  to use a gzip library, as some suggested.

                  To others that do not use compression I highly recomend it. The
                  advantage of JSON is the small size, and simplicity to Parse. If
                  you are not compressing your streams then you are not taking full
                  advantage of the format.

                  My JSON went from 5k to 1k, i know these are already small files,
                  but my web interface is making dozens of calls a minute and updating
                  the screen, that small decrease in size will add tons to the
                  unsability of the page for those on slower connections.

                  The final solution was to wrap my PHP page with start_gzip and
                  end_gzip commands, the browser auto decompresses and parses the
                  result wih JS.

                  Thanks again to all that left feedback.

                  -Marc

                  --- In json@yahoogroups.com, Tom Metro <tmetro+json@...> wrote:
                  >
                  > henrik hjelte wrote:
                  > >> ...I am sending the files to the browser in gzip form and they
                  should
                  > >> automagiacally decompress, before going to the parser.
                  > >
                  > > I think you have to set the proper value of the http response
                  > > content-type, to a value like text/gzip or text/zip.
                  >
                  > Yes, though it looks like Content-Type is unchanged, but a
                  > Content-Encoding header needs to be added.
                  >
                  > Here are a couple of articles on this that I found when searching
                  for
                  > "HTTP Compression":
                  >
                  >
                  http://www.webreference.com/internet/software/servers/http/compressio
                  n/
                  >
                  > Most newer browsers since 1998/1999 have been equipped to
                  support the
                  > HTTP 1.1 standard known as "content-encoding." ... Essentially
                  the
                  > browser indicates to the server that it can accept "content
                  encoding"
                  > and if the server is capable it will then compress the data and
                  > transmit it.
                  >
                  > http://www.websiteoptimization.com/speed/tweak/compress/
                  >
                  > HTTP compression uses public domain compression algorithms,
                  like gzip
                  > and compress, to compress XHTML, JavaScript, CSS, and other
                  text files
                  > at the server. This standards-based method of delivering
                  compressed
                  > content is built into HTTP 1.1, and most modern browsers that
                  support
                  > HTTP 1.1 support ZLIB inflation of deflated documents. In other
                  words,
                  > they can decompress compressed files automatically...
                  >
                  >
                  > So the likely problem is that your server isn't sending the
                  correct
                  > Content-Encoding header. Also note that your server is supposed to
                  be
                  > looking at the request headers and *only* sending compressed
                  content if
                  > the client says it can handle it.
                  >
                  > Whether all this magic is supported by the XMLHttpRequest() API is
                  > another matter, but being a documented feature of HTTP 1.1 it
                  seems
                  > likely that the capability is implemented in the lower layer
                  protocol API.
                  >
                  > -Tom
                  >
                  > --
                  > Tom Metro
                  > Venture Logic, Newton, MA, USA
                  > "Enterprise solutions through open source."
                  > Professional Profile: http://tmetro.venturelogic.com/
                  >
                Your message has been successfully submitted and would be delivered to recipients shortly.