Ostatnio moją pasją było gonienie mojej bardzo rozbudowanej witryny, która z racji objętości po prostu zwalniała. Przeglądając net a szczególnie kursy organizowane w ramach Joomla day można znaleźć bardzo dobre rozwiązanie z organizacją pamięci cache w Joomli. Od dawna interesowało mnie, dlaczego internetowe narzędzia wskazują na brak użycia funkcji Expire cache dla strony. Zastosowałem rozwiązanie z dopisaniem do .htacess kodu poniżej, który rozwiązuje problem z brakiem Expire cache, kompresją gzip. Moja strona ładuje się teraz z ok. 12 sekund do 4. Świetna sprawa.

Opis rozwiązaniu tu: http://www.joomla.pl/publikacje/674-...woj-stron.html

Polecam bo warto. Moja witryna od razu awansowała z oceny D na C. Pozostał mi problem z liczbą odnośników do innych stron - przede wszystkim strumiń facebooka, lokalnej pogody, co jeszcze zaniża mi ocenę. W wolnej chwili pobawię się z przeniesieniem skryptów javy na sam koniec ładowania się strony, przed znacznik bottom.

Kod PHP:
# ----------------------------------------------------------------------
# Gzip compression
# ----------------------------------------------------------------------

<IfModule mod_deflate.c>

  
# Force deflate for mangled headers developer.yahoo.com/blogs/ydn/posts/2010/12/pushing-beyond-gzipping/
  
<IfModule mod_setenvif.c>
    <
IfModule mod_headers.c>
      
SetEnvIfNoCase ^(Accept-EncodXng|X-cept-Encoding|X{15}|~{15}|-{15})$ ^((gzip|deflate)\s*,?\s*)+|[X~-]{4,13}$ HAVE_Accept-Encoding
      RequestHeader append Accept
-Encoding "gzip,deflate" env=HAVE_Accept-Encoding
    
</IfModule>
  </
IfModule>

  
# Compress all output labeled with one of the following MIME-types
  # (for Apache versions below 2.3.7, you don't need to enable `mod_filter`
  # and can remove the `<IfModule mod_filter.c>` and `</IfModule>` lines as
  # `AddOutputFilterByType` is still in the core directives)
  
<IfModule mod_filter.c>
    
AddOutputFilterByType DEFLATE application/atom+xml \
                                  
application/javascript \
                                  
application/json \
                                  
application/rss+xml \
                                  
application/vnd.ms-fontobject \
                                  
application/x-font-ttf \
                                  
application/xhtml+xml \
                                  
application/xml \
                                  
font/opentype \
                                  
image/svg+xml \
                                  
image/x-icon \
                                  
text/css \
                                  
text/html \
                                  
text/plain \
                                  
text/x-component \
                                  
text/xml
  
</IfModule>

</
IfModule>


# ----------------------------------------------------------------------
# Expires headers (for better cache control)
# ----------------------------------------------------------------------

# These are pretty far-future expires headers.
# They assume you control versioning with filename-based cache busting
# Additionally, consider that outdated proxies may miscache
#   www.stevesouders.com/blog/2008/08/23/revving-filenames-dont-use-querystring/

# If you don't use filenames to version, lower the CSS and JS to something like
# "access plus 1 week".

<IfModule mod_expires.c>
  
ExpiresActive on

# Perhaps better to whitelist expires rules? Perhaps.
  
ExpiresDefault                          "access plus 1 month"

# cache.appcache needs re-requests in FF 3.6 (thanks Remy ~Introducing HTML5)
  
ExpiresByType text/cache-manifest       "access plus 60 seconds"

# Your document html
  
ExpiresByType text/html                 "access plus 60 seconds"

# Data
  
ExpiresByType application/json          "access plus 60 seconds"
  
ExpiresByType application/xml           "access plus 60 seconds"
  
ExpiresByType text/xml                  "access plus 60 seconds"

# Feed
  
ExpiresByType application/atom+xml      "access plus 1 hour"
  
ExpiresByType application/rss+xml       "access plus 1 hour"

# Favicon (cannot be renamed)
  
ExpiresByType image/x-icon              "access plus 1 week"

# Media: images, video, audio
  
ExpiresByType audio/ogg                 "access plus 1 month"
  
ExpiresByType image/gif                 "access plus 1 month"
  
ExpiresByType image/jpeg                "access plus 1 month"
  
ExpiresByType image/png                 "access plus 1 month"
  
ExpiresByType video/mp4                 "access plus 1 month"
  
ExpiresByType video/ogg                 "access plus 1 month"
  
ExpiresByType video/webm                "access plus 1 month"

# HTC files  (css3pie)
  
ExpiresByType text/x-component          "access plus 1 month"

# Webfonts
  
ExpiresByType application/vnd.ms-fontobject "access plus 1 month"
  
ExpiresByType application/x-font-ttf    "access plus 1 month"
  
ExpiresByType application/x-font-woff   "access plus 1 month"
  
ExpiresByType font/opentype             "access plus 1 month"
  
ExpiresByType image/svg+xml             "access plus 1 month"

# CSS and JavaScript
  
ExpiresByType application/javascript    "access plus 1 year"
  
ExpiresByType text/css                  "access plus 1 year"

</IfModule>


# ----------------------------------------------------------------------
# Prevent mobile network providers from modifying your site
# ----------------------------------------------------------------------

# The following header prevents modification of your code over 3G on some
# European providers.
# This is the official 'bypass' suggested by O2 in the UK.

# <IfModule mod_headers.c>
# Header set Cache-Control "no-transform"
# </IfModule>


# ----------------------------------------------------------------------
# ETag removal
# ----------------------------------------------------------------------

# FileETag None is not enough for every server.
<IfModule mod_headers.c>
  
Header unset ETag
</IfModule>

# Since we're sending far-future expires, we don't need ETags for
# static content.
#   developer.yahoo.com/performance/rules.html#etags
FileETag None