logo
Apache Lounge
Webmasters

 

About Forum Index Downloads Search Register Log in RSS X


Keep Server Online

If you find the Apache Lounge, the downloads and overall help useful, please express your satisfaction with a donation.

or

Bitcoin

A donation makes a contribution towards the costs, the time and effort that's going in this site and building.

Thank You! Steffen

Your donations will help to keep this site alive and well, and continuing building binaries. Apache Lounge is not sponsored.
Post new topic   Forum Index -> Apache View previous topic :: View next topic
Reply to topic   Topic: Apache Reverse Proxy with caching and content freshness
Author
pyli



Joined: 03 Sep 2011
Posts: 4
Location: India

PostPosted: Sat 03 Sep '11 22:08    Post subject: Apache Reverse Proxy with caching and content freshness Reply with quote

Hi all (Apache Experts)

I am a noobie, trying to learn good things about Apache httpd server.

Now i want to configure a reverse proxy with caching & deflation. But the rules are the performance has to be good over the network. All objects(resources) can be cached for a period of time say N or 1 month. But if there is modification or new representation in the origin server before the expiry time, the cache needs to have the new representation.

I am trying to implement it. I have tried to understand the various documents posted by many experts. But i don't get the desired results.
I am posting the httpd.conf file here.

Can some one guide me how to optimize this configuration.
The major goal is to have good caching for a month.
But to fetch the new representation if it has changed in before the expiry time. And there should be no loss in Latency.

I am trying to understand caching+validation and if there is a way to instruct the browsers not to cache but use the proxy cache instead. does 304 return code have impact on bandwidth?

Thanks in advance for advising me.
Regards
Pyli

Apache Version = Apache2.2
Installed on Windows Xp

Code:
NameVirtualHost  abc.dmn.com:8080
<VirtualHost  abc.dmn.com:8080>
      ProxyRequests off
      ProxyPass  / http://tomcatserver:8435/
      ProxyPassReverse / http://tomcatserver:8435/
</VirtualHost>
      
      <IfModule mod_cache.c>
            <IfModule mod_mem_cache.c>
               CacheEnable mem /
               CacheEnable mem http://tomcatserver:8435/
               MCacheRemovalAlgorithm LRU
               MCacheSize 2000000
               MCacheMaxObjectCount 100000
               MCacheMinObjectSize 1
               MCacheMaxStreamingBuffer 9900000
               MCacheMaxObjectSize 9900000
               CacheStoreNoStore On
               CacheStorePrivate On
               CacheIgnoreNoLastMod On
               CacheIgnoreCacheControl On
            </IfModule>
      </IfModule>

      <IfModule mod_expires.c>
       ExpiresActive On
       ExpiresDefault "access plus 1 month"
              
            <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|html|xml|class)$">
               ExpiresDefault "access plus 1 month"
               Header set Cache-Control  "no-cache,proxy-revalidate,must-revalidate,public"
            </FilesMatch>

      
      </IfModule>


      #Deflation
      <IfModule mod_deflate.c>
              AddOutputFilterByType DEFLATE text/plain
              AddOutputFilterByType DEFLATE text/html
              AddOutputFilterByType DEFLATE text/xml
              AddOutputFilterByType DEFLATE text/css
              AddOutputFilterByType DEFLATE image/svg+xml
              AddOutputFilterByType DEFLATE image/x-icon
              AddOutputFilterByType DEFLATE application/xml
              AddOutputFilterByType DEFLATE application/xhtml+xml
              AddOutputFilterByType DEFLATE application/rss+xml
              AddOutputFilterByType DEFLATE application/javascript
              AddOutputFilterByType DEFLATE application/x-javascript
      
              AddOutputFilterByType DEFLATE application/x-httpd-php
              AddOutputFilterByType DEFLATE application/x-httpd-fastphp
              AddOutputFilterByType DEFLATE application/x-httpd-eruby
      
              DeflateCompressionLevel 6
      
      # Netscape 4.X has some problems
              BrowserMatch ^Mozilla/4 gzip-only-text/html
      
      # Netscape 4.06-4.08 have some more problems
              BrowserMatch ^Mozilla/4\.0[678] no-gzip
      
      # MSIE masquerades as Netscape, but it is fine
              BrowserMatch \bMSIE !no-gzip !gzip-only-text/html
      
      # Setup custom deflate log
              DeflateFilterNote Input instream
              DeflateFilterNote Output outstream
              DeflateFilterNote Ratio ratio

              LogFormat '"%r" %{outstream}n/%{instream}n (%{ratio}n%%)' deflate
      # Example of log file (add to vhosts)
              CustomLog logs/deflate_log DEFLATE
      </IfModule>


Back to top
James Blond
Moderator


Joined: 19 Jan 2006
Posts: 7373
Location: Germany, Next to Hamburg

PostPosted: Tue 06 Sep '11 21:41    Post subject: Reply with quote

I never used mod cache that way, but maybe you can use CacheLastModifiedFactor
Back to top
pyli



Joined: 03 Sep 2011
Posts: 4
Location: India

PostPosted: Thu 08 Sep '11 2:54    Post subject: Reply with quote

James Blond wrote:
I never used mod cache that way, but maybe you can use CacheLastModifiedFactor


Thanks James,

Do you think if i made the directive like this
Code:

CacheLastModifiedFactor = 0.0


a good option? I don't know how that's going to be. My guess is that it should be immediate. What is your opinion?
Back to top
James Blond
Moderator


Joined: 19 Jan 2006
Posts: 7373
Location: Germany, Next to Hamburg

PostPosted: Thu 08 Sep '11 10:34    Post subject: Reply with quote

I think the 0.0 is a good value. Yepp the 0.0 schould be immediate. But as I told I never just mod cache so extrem with such a long caching time. I can just recommend to trial and error Wink Tell us if that works.
Back to top
pyli



Joined: 03 Sep 2011
Posts: 4
Location: India

PostPosted: Sun 11 Sep '11 8:11    Post subject: Reply with quote

Code:
<IfModule mod_expires.c>
       ExpiresActive On
       ExpiresDefault "access plus 1 hour"
             
            <FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf)$">
               ExpiresDefault "access plus 1 month"
               Header set Cache-Control  "no-cache,proxy-revalidate,must-revalidate,public"
            </FilesMatch>

     
      </IfModule>


From the above code, i am trying to implement a freshness of proxy cache for a time period and specific URL contents that have the files names to expire after a certain time but they should revaildate to see if they are fresh.

www.example.com/Testapp/abc.jpeg

But when i apply the above code, i don't see that happening for the above URL. the response headers says that this object expires in 1 hour and not 1 month. Also the cache-control is not set

Is there some thing wrong in the filesmatch block, or is there some over riding of the directives happening here. I am lost.
Back to top
pyli



Joined: 03 Sep 2011
Posts: 4
Location: India

PostPosted: Thu 22 Sep '11 15:16    Post subject: Reply with quote

Hi,

I think this Block
Code:
<FilesMatch "\.(ico|pdf|flv|jpg|jpeg|png|gif|js|css|swf|html|xml|class)$">
               ExpiresDefault "access plus 1 month"
               Header set Cache-Control  "no-cache,proxy-revalidate,must-revalidate,public"
            </FilesMatch>

will work only if the Apache is in the same host where the application server resides.

Is it true? Is there a way to match files when the apache proxy is in the remote box?

Otherwise how can i give Header control for the specific file times in Remote Proxy?

Thanks in advance for the advices.
Back to top


Reply to topic   Topic: Apache Reverse Proxy with caching and content freshness View previous topic :: View next topic
Post new topic   Forum Index -> Apache