summaryrefslogtreecommitdiffstats
path: root/README.txt
blob: 7e7b4ffb894c71f608e0c83f1850966c38626e90 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
 BOOST MODULE FOR DRUPAL 6.x
 ---------------------------

 CONTENTS OF THIS README
 -----------------------
   * Description
   * Features
   * Requirements
   * Recommended Modules
   * Installation
   * System Check & Verify Functions
   * Boost Administrative and Stats Blocks
   * Configuration Tips
   * Important Notes & Troubleshooting
   * File System Cache
   * How Boost Works
   * Dispatch Mechanism
   * Limitations
   * Boost Handbook Links
   * Boost Project & Drupal Links
   * Credits


 DESCRIPTION
 -----------
 This module provides static page caching for Drupal 6.x websites.
 It provides a significant performance increase as well as
 scalability for sites that receive mostly anonymous traffic.
 Web pages load very fast from the cache instead of waiting on
 PHP and Drupal to serve them from the database. If the page is
 not found in the cache, then the request is passed to Drupal.
 The built-in crawler makes sure expired content is quickly
 regenerated to insure fast page loading at all times.
    The guy that is writing this could brag about Boost,
 but he will let you do that part. Enjoy!


 FEATURES
 --------
 *** This is a partial list, because it could take the whole page.
 * Fast page serving for anonymous visitors to your Drupal website.
 * Reduces web server load and increases your site's scalability.
 * On-demand page caching (static file created after first page request).
 * Uses cron run to trigger cleaning of cached files.
 * Built in crawler to automatically regenerate cached files.
 * Adjustable cache lifetimes for different parts of the website.
 * Supports HTML, XML, CSS, JavaScript, JSON/AJAX.
 * Injects HTML comment to provide easy verification of Boost.
 * Supports shared, VPS and dedicated hosting.
 * Supports sub-directory Installations.
 * Full support for multi-site Drupal installations.


 REQUIREMENTS
 ------------
 Boost is designed for Drupal 6.x served by Apache on any platform.

 Drupal's clean URLs MUST be enabled and working properly.

 If the cached files and pages must be cleared at their expired time,
 the cron run for Drupal must be correctly setup to execute more often than,
 or as often as the cache lifetime you specify in the settings.

 Since the static page caching is implemented with mod_rewrite directives,
 Apache version 1.3 or 2.x with mod_rewrite enabled is required (if Drupal's
 clean URLs work for you, you're fine; if not, get them working first).

 Other web servers, such as Lighttpd, are NOT officially supported at present.
 Lighttpd: http://drupal.org/node/150909
 Nginx: http://drupal.org/node/244072


 RECOMMENDED MODULES
 -------------------
    Path (Drupal Core)

    Global Redirect	http://drupal.org/project/globalredirect

    Transliteration	http://drupal.org/project/transliteration

    Pathauto		http://drupal.org/project/pathauto

    Token		http://drupal.org/project/token

  Optional if cron configuration is not available on your server.
    Poormanscron 1.1 or 2.0	http://drupal.org/project/poormanscron

  If enabled [x] Clear all cached pages referenced via CCK with a node...
    The node referrer module is recommended.
    Node Referrer	http://drupal.org/project/nodereferrer


 INSTALLATION
 ------------
  1. Goto: [Administer > Site configuration > Clean URLs] and ensure that
     Drupal's clean URLs are enabled and working correctly on your site.

  2. Unzip and upload the module folder (as is) to the sites/all/modules
     folder in your Drupal installation directory.

  3. Goto: [Administer > Site building > Modules] and enable the Boost
     module. You will find it in the section labeled "Caching".

  4. Goto: [Administer > Site configuration > Performance > Boost settings]
     Specify the cache directory, which should be something like
     cache/normal/www.example.com (keeping the default directory is recommended)
     and must be writeable by the web server: you may need to create the
     directory, and set the permissions so it is writeable.

     On the [Administer > Site configuration > Performance > Boost settings]
     page is the Default maximum cache lifetime setting. As cached pages are
     created, they are given an expire by date and time, which is the current
     date and time plus the maximum cache lifetime. These dates and times are
     checked on each cron run; and if a page is expired, the cache is cleared,
     and a new cached version will be created the next time the page is
     called upon by an anonymous user (including bots). The page will be
     regenerated by the Boost crawler if enabled on the Boost settings page.

  5. IMPORTANT:
     --- This step is easy and required for Boost to work! ---
     Back up the original .htaccess file from your Drupal installation directory
     for safe keeping. Copy the custom generated htaccess rule from
     [Administer > Site configuration > Performance > htaccess rules generation]
     page and paste the rules into the Drupal htaccess file as shown below.

       # RewriteBase /
     -------paste the rules right here--------
       # Rewrite URLs of the form 'x' to the form 'index.php?q=x'.

     In the boost/htaccess/ folder, the default.txt file shows you
     the exact placement of the rules, in case your not sure.

     The module package has 3 htaccess templates included in the Boost/htaccess
     folder (boosted1.txt, boosted2.txt and default.txt). These templates may
     be helpful in some cases and are good for reference. For the technically
     inclined, the difference between the two .htaccess templates is due
     to boosted1.txt relying on SERVER_NAME versus boosted2.txt using HTTP_HOST.
     There are valid use cases for both in more advanced multi-site installations.

     Note: If you get "400 Bad Request" responses from Apache server, make sure
     you have configured RewriteBase as documented in
     http://drupalcode.org/viewvc/drupal/drupal/.htaccess?view=markup&pathrev=DRUPAL-6
     For example when using VirtualHost configurations it is necessary to define as:
     RewriteBase / 

  6. Goto: [Administer > Site configuration > Performance]
     Check and set the Drupal cache settings as desired.

  7. Prepare robots.txt file for search engines.
     Add "Disallow: /boost_stats.php" to the robots.txt file as shown below.

     # Files
     Disallow: /boost_stats.php
     Disallow: /CHANGELOG.txt
     .....
     .....


 SYSTEM CHECK AND VERIFY FUNCTIONS
 ---------------------------------
  1. Log out from Drupal (or use another browser) to browse around your site
     as the anonymous user. Ensure that static files are indeed being
     generated into the Boost cache directory you specified above (#4); and if
     you opt to use gzip, likewise check gzipped files are being generated in
     the directory you specified for this.
     The Administer > Performance > Boost settings page shows how many pages
     are cached by Boost.

  2. Check the Drupal status page [Administer > Reports > Status report]
     for any errors or notices.

  3. To check whether you have a cached or dynamic version of a page,
     look at the very end of the page's HTML source. You have the cached
     version if the last line looks like this:
 <!--Page cached by Boost @ 2009-08-11 06:19:58,expires @ 2009-08-11 09:19:58-->


 BOOST ADMINISTRATIVE AND STATS BLOCKS
 -------------------------------------
 There are 2 blocks that you can add to help with the administrative
 side (status, page configuration), and 1 block to support core stats.

 Goto: (administer > Site building > Blocks > List) to place them.

 The visibility of blocks can also be configured by role and page.
 On the Blocks list page, to the right of each block click 'configure'.


 * Status Block
   This block shows the current status of the page as far as Boost is
   concerned. It will state if the page is served 'live' or by 'Boost',
   the expiration of the page and has a Flush Page button to clear the
   page from the cache manually. The block only appears if your not user
   0 and provides useful information about PHP errors on the page.

 * Page configuration Block
   This block allows the administrator to set pages individually.
   Including setting for maximum cache lifetime(select box), preemptive
   cache(on or off), scope(page ID, content type or content container).

 * Stats Block
   Drupal's core stats is supported. Configure the "Popular content" block, but
   then disable it. Place the "Boost: AJAX core statistics" in its place. If ajax
   stats are loading too slowly, copy stats/boost_stats.php to your webroot and
   enable "Cache Statistics Block". The cache gets updated on cron runs.


 CONFIGURATION TIPS
 ------------------
 For the (i18n) and the (Domain) modules:
   Enable
    [x] Do not store the cache file path in the database
    [x] Flush all sites caches in this database (singe db, multi-site)
   Disable
    [ ] Only allow ASCII characters in path

 Enable XML & AJAX/JSON caches
   Enable
    [x] Cache .xml & /feed
    [x] Cache ajax/json

 To Use the Cron Crawler
   Enable
    [x] Overwrite the cached file if it already exits
    [x] Expire content in DB, do not flush file.
    [x] Enable the cron crawler


 IMPORTANT NOTES AND TROUBLESHOOTING
 -----------------------------------
 * If cron is not clearing the cache as expected.
   Set $base_url variable in /sites/default/settings.php (line 125 or so)
   so cron runs error free and clears the cache properly when invoked like
   'php /path/to/cron.php' or 'drush cron'. This should be something like
   http://www.example.com

   Guide for editing settings.php
   http://drupal.org/node/367081#comment-1504894

 * If your Drupal URL paths contain non-ASCII characters, you may have to
   tweak your locate settings on the server in order to ensure the URL paths
   get correctly translated into directory paths in the file system.
   You can also turn off the ASCII filter in the Boost Advanced Settings.
   OR install the Transliteration module to help fix the characters.


 FILE SYSTEM CACHE
 -----------------
 The cached files are stored (by default) in the cache/normal/ directory
 under your Drupal installation directory. The Drupal pages' URL paths
 are translated into file system names in the following manner:

   http://example.com/
   => cache/normal/example.com/_.html

   http://example.com/about
   => cache/normal/example.com/about_.html

   http://example.com/about/staff
   => cache/normal/example.com/about/staff_.html

   http://example.com/node/42
   => cache/normal/example.com/node/42_.html

 You'll note that the directory path includes the Drupal site name, enabling
 support for multi-site Drupal installations.


 HOW BOOST WORKS
 ---------------
 Once Boost has been installed and enabled, page requests by anonymous
 visitors will be cached as static HTML pages in the server's file system.
 Periodically (when the Drupal cron runs) stale or expired pages
 (i.e. files or pages exceeding the maximum cache lifetime setting)
 will be purged, allowing them to be recreated the first time that the
 next anonymous visitor requests that page again. If the Cron Crawler
 is enabled, the files and pages will be regenerated automatically.

 New rewrite rules are added to the .htaccess file supplied with Drupal,
 directing the web server to try and fulfill page requests by anonymous
 visitors first and foremost from the static page cache, and to only pass the
 request through to Drupal if the requested page is not cacheable or hasn't yet
 been cached.


 DISPATCH MECHANISM
 ------------------
 For each incoming page request, the new Apache mod_rewrite directives in
 .htaccess will check if a cached version of the requested page should be
 served as per the following simple rules:

  1. First, we check that the HTTP request method being used is GET.
     POST requests are not cacheable, and are passed through to Drupal.

  2. Since only anonymous visitors can benefit from the static page cache at
     present, we check that the page request doesn't include a cookie that
     is set when a user logs in to the Drupal site. If the cookie is
     present, we simply let Drupal handle the page request dynamically.

  3. Now, for the important bit: we check whether we actually have a cached
     HTML file for the request URL path available in the file system cache.
     If we do, we direct the web server to serve that file directly and to
     terminate the request immediately after; in this case, Drupal (and
     indeed PHP) is never invoked, meaning the page request will be served
     by the web server itself at full speed.

  4. If, however, we couldn't locate a cached version of the page, we just
     pass the request on to Drupal, which will serve it dynamically in the
     normal manner.


 LIMITATIONS
 -----------
 * Only anonymous visitors will be served cached versions of pages;
   authenticated users will get dynamic content. This will limit the
   usefulness of this module for those community sites that require user
   registration and login for active participation.

 * In contrast to Drupal's built-in caching, static caching will lose any
   additional HTTP headers set for an HTML page by a module. This is unlikely
   to be problem except for some very specific modules and rare use cases.

 * Web server software other than Apache is not supported at the moment.
   Adding Lighttpd support would be desirable but is not a high priority for
   the developer at present (see TODO.txt). (Note that while the LiteSpeed web
   server has not been specifically tested by the developer, it may, in fact,
   work, since they claim to support .htaccess files and to have mod_rewrite
   compatibility. Feedback on this would be appreciated.)


 HANDBOOK PAGES
 --------------
 Boost handbook			http://drupal.org/node/545664

 Installation & Settings	http://drupal.org/node/545908

 Boost Tips & Tricks		http://drupal.org/node/583264

 FAQ & Future Features		http://drupal.org/node/546134

 Using & Blogging About Boost	http://drupal.org/node/546834


 BOOST PROJECT & DRUPAL LINKS
 ----------------------------
 Boost project page		http://drupal.org/project/boost

 ** Post feature requests and bug reports:
 Boost issue que		http://drupal.org/project/issues/boost

 ** The Drupal 'post installation' forum:
 Drupal Help Forum		http://drupal.org/forum/22

 ** The original blog post about Boost:
 http://bendiken.net/2006/05/28/static-page-caching-for-drupal


 CREDITS
 -------
 Originally Developed by Arto Bendiken(arto) http://bendiken.net

 Ported to Drupal 5.x by Alexander I. Grafov(axel) http://drupal.ru

 Ported to Drupal 6.x by Ben Lavender(bhuga) http://bhuga.net

 Miscellaneous contributions by Jacob Peddicord, Justin Miller & Barry Jaspan.

 6.x Developer and Maintainer, Mike Carper(mikeytown2) of http://316solutions.net


 END OF FILE
 -----------