79

What does the HTTP header Pragma: Public mean?

user185631
  • 1,233
  • 1
  • 10
  • 13

3 Answers3

43

According to the standard, Pragma is implementation dependent (section 14.32), except for no-cache because of its wide use. Cache-Control (section 14.9) is the proper way to control caching. This is what the standard says for a Cache-Control: public:

Indicates that the response MAY be cached by any cache, even if it would normally be non-cacheable or cacheable only within a non- shared cache.

Gonzalo
  • 19,578
  • 3
  • 69
  • 75
  • 2
    Thanks but there are many instances of people coding so that a header is sent that contains only Pragma: Public. What does this mean to any major browser? – user185631 Dec 18 '09 at 11:14
  • 3
    The same that "Cache-Control: public", ie, that they MAY cache the information in that response. – Gonzalo Dec 18 '09 at 17:36
  • 2
    It means coders should stop using it because it's probably not serving any purpose – Anthony Jul 14 '14 at 06:49
11

Also, "Pragma: Public" is used in Google App Engine applications to enable caching of responses within its Edge Cache.

See Details on Google App Engine's caching proxy?

Community
  • 1
  • 1
Andy Dennie
  • 5,872
  • 2
  • 27
  • 49
8

Useful when you come across this error: http://trac.edgewall.org/ticket/1020. IE 8 & less seems to like to cache things when they are on a SSL server. Putting 'Pragma:public' helps with: "Internet Explorer was not able to open this Internet site. The requested site is either unavailable or cannot be found. Please try again later"

hallsuch
  • 81
  • 1
  • 2