Hyper Cache - Version 3.1.8

Version Description

  • Fixed the comment awaiting notification cached
Download this release

Release Info

Developer satollo
Plugin Icon wp plugin Hyper Cache
Version 3.1.8
Comparing to
See all releases

Code changes from version 2.9.1.6 to 3.1.8

admin.css ADDED
@@ -0,0 +1,553 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ /*
2
+ * jQuery UI CSS Framework 1.8.16
3
+ *
4
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
5
+ * Dual licensed under the MIT or GPL Version 2 licenses.
6
+ * http://jquery.org/license
7
+ *
8
+ * http://docs.jquery.com/UI/Theming/API
9
+ */
10
+
11
+ /* Layout helpers
12
+ ----------------------------------*/
13
+ .ui-helper-hidden { display: none; }
14
+ .ui-helper-hidden-accessible { position: absolute !important; clip: rect(1px 1px 1px 1px); clip: rect(1px,1px,1px,1px); }
15
+ .ui-helper-reset { margin: 0; padding: 0; border: 0; outline: 0; line-height: 1.3; text-decoration: none; font-size: 100%; list-style: none; }
16
+ .ui-helper-clearfix:after { content: "."; display: block; height: 0; clear: both; visibility: hidden; }
17
+ .ui-helper-clearfix { display: inline-block; }
18
+ /* required comment for clearfix to work in Opera \*/
19
+ * html .ui-helper-clearfix { height:1%; }
20
+ .ui-helper-clearfix { display:block; }
21
+ /* end clearfix */
22
+ .ui-helper-zfix { width: 100%; height: 100%; top: 0; left: 0; position: absolute; opacity: 0; filter:Alpha(Opacity=0); }
23
+
24
+
25
+ /* Interaction Cues
26
+ ----------------------------------*/
27
+ .ui-state-disabled { cursor: default !important; }
28
+
29
+
30
+ /* Icons
31
+ ----------------------------------*/
32
+
33
+ /* states and images */
34
+ .ui-icon { display: block; text-indent: -99999px; overflow: hidden; background-repeat: no-repeat; }
35
+
36
+
37
+ /* Misc visuals
38
+ ----------------------------------*/
39
+
40
+ /* Overlays */
41
+ .ui-widget-overlay { position: absolute; top: 0; left: 0; width: 100%; height: 100%; }
42
+ /*
43
+ * jQuery UI Accordion 1.8.16
44
+ *
45
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
46
+ * Dual licensed under the MIT or GPL Version 2 licenses.
47
+ * http://jquery.org/license
48
+ *
49
+ * http://docs.jquery.com/UI/Accordion#theming
50
+ */
51
+ /* IE/Win - Fix animation bug - #4615 */
52
+ .ui-accordion { width: 100%; }
53
+ .ui-accordion .ui-accordion-header { cursor: pointer; position: relative; margin-top: 1px; zoom: 1; }
54
+ .ui-accordion .ui-accordion-li-fix { display: inline; }
55
+ .ui-accordion .ui-accordion-header-active { border-bottom: 0 !important; }
56
+ .ui-accordion .ui-accordion-header a { display: block; font-size: 1em; padding: .5em .5em .5em .7em; }
57
+ .ui-accordion-icons .ui-accordion-header a { padding-left: 2.2em; }
58
+ .ui-accordion .ui-accordion-header .ui-icon { position: absolute; left: .5em; top: 50%; margin-top: -8px; }
59
+ .ui-accordion .ui-accordion-content { padding: 1em 2.2em; border-top: 0; margin-top: -2px; position: relative; top: 1px; margin-bottom: 2px; overflow: auto; display: none; zoom: 1; }
60
+ .ui-accordion .ui-accordion-content-active { display: block; }
61
+ /*
62
+ * jQuery UI Autocomplete 1.8.16
63
+ *
64
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
65
+ * Dual licensed under the MIT or GPL Version 2 licenses.
66
+ * http://jquery.org/license
67
+ *
68
+ * http://docs.jquery.com/UI/Autocomplete#theming
69
+ */
70
+ .ui-autocomplete { position: absolute; cursor: default; }
71
+
72
+ /* workarounds */
73
+ * html .ui-autocomplete { width:1px; } /* without this, the menu expands to 100% in IE6 */
74
+
75
+ /*
76
+ * jQuery UI Menu 1.8.16
77
+ *
78
+ * Copyright 2010, AUTHORS.txt (http://jqueryui.com/about)
79
+ * Dual licensed under the MIT or GPL Version 2 licenses.
80
+ * http://jquery.org/license
81
+ *
82
+ * http://docs.jquery.com/UI/Menu#theming
83
+ */
84
+ .ui-menu {
85
+ list-style:none;
86
+ padding: 2px;
87
+ margin: 0;
88
+ display:block;
89
+ float: left;
90
+ }
91
+ .ui-menu .ui-menu {
92
+ margin-top: -3px;
93
+ }
94
+ .ui-menu .ui-menu-item {
95
+ margin:0;
96
+ padding: 0;
97
+ zoom: 1;
98
+ float: left;
99
+ clear: left;
100
+ width: 100%;
101
+ }
102
+ .ui-menu .ui-menu-item a {
103
+ text-decoration:none;
104
+ display:block;
105
+ padding:.2em .4em;
106
+ line-height:1.5;
107
+ zoom:1;
108
+ }
109
+ .ui-menu .ui-menu-item a.ui-state-hover,
110
+ .ui-menu .ui-menu-item a.ui-state-active {
111
+ font-weight: normal;
112
+ margin: -1px;
113
+ }
114
+ /*
115
+ * jQuery UI Button 1.8.16
116
+ *
117
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
118
+ * Dual licensed under the MIT or GPL Version 2 licenses.
119
+ * http://jquery.org/license
120
+ *
121
+ * http://docs.jquery.com/UI/Button#theming
122
+ */
123
+ .ui-button { display: inline-block; position: relative; padding: 0; margin-right: .1em; text-decoration: none !important; cursor: pointer; text-align: center; zoom: 1; overflow: visible; } /* the overflow property removes extra width in IE */
124
+ .ui-button-icon-only { width: 2.2em; } /* to make room for the icon, a width needs to be set here */
125
+ button.ui-button-icon-only { width: 2.4em; } /* button elements seem to need a little more width */
126
+ .ui-button-icons-only { width: 3.4em; }
127
+ button.ui-button-icons-only { width: 3.7em; }
128
+
129
+ /*button text element */
130
+ .ui-button .ui-button-text { display: block; line-height: 1.4; }
131
+ .ui-button-text-only .ui-button-text { padding: .4em 1em; }
132
+ .ui-button-icon-only .ui-button-text, .ui-button-icons-only .ui-button-text { padding: .4em; text-indent: -9999999px; }
133
+ .ui-button-text-icon-primary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 1em .4em 2.1em; }
134
+ .ui-button-text-icon-secondary .ui-button-text, .ui-button-text-icons .ui-button-text { padding: .4em 2.1em .4em 1em; }
135
+ .ui-button-text-icons .ui-button-text { padding-left: 2.1em; padding-right: 2.1em; }
136
+ /* no icon support for input elements, provide padding by default */
137
+ input.ui-button { padding: .4em 1em; }
138
+
139
+ /*button icon element(s) */
140
+ .ui-button-icon-only .ui-icon, .ui-button-text-icon-primary .ui-icon, .ui-button-text-icon-secondary .ui-icon, .ui-button-text-icons .ui-icon, .ui-button-icons-only .ui-icon { position: absolute; top: 50%; margin-top: -8px; }
141
+ .ui-button-icon-only .ui-icon { left: 50%; margin-left: -8px; }
142
+ .ui-button-text-icon-primary .ui-button-icon-primary, .ui-button-text-icons .ui-button-icon-primary, .ui-button-icons-only .ui-button-icon-primary { left: .5em; }
143
+ .ui-button-text-icon-secondary .ui-button-icon-secondary, .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
144
+ .ui-button-text-icons .ui-button-icon-secondary, .ui-button-icons-only .ui-button-icon-secondary { right: .5em; }
145
+
146
+ /*button sets*/
147
+ .ui-buttonset { margin-right: 7px; }
148
+ .ui-buttonset .ui-button { margin-left: 0; margin-right: -.3em; }
149
+
150
+ /* workarounds */
151
+ button.ui-button::-moz-focus-inner { border: 0; padding: 0; } /* reset extra padding in Firefox */
152
+ /*
153
+ * jQuery UI Datepicker 1.8.16
154
+ *
155
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
156
+ * Dual licensed under the MIT or GPL Version 2 licenses.
157
+ * http://jquery.org/license
158
+ *
159
+ * http://docs.jquery.com/UI/Datepicker#theming
160
+ */
161
+ .ui-datepicker { width: 17em; padding: .2em .2em 0; display: none; }
162
+ .ui-datepicker .ui-datepicker-header { position:relative; padding:.2em 0; }
163
+ .ui-datepicker .ui-datepicker-prev, .ui-datepicker .ui-datepicker-next { position:absolute; top: 2px; width: 1.8em; height: 1.8em; }
164
+ .ui-datepicker .ui-datepicker-prev-hover, .ui-datepicker .ui-datepicker-next-hover { top: 1px; }
165
+ .ui-datepicker .ui-datepicker-prev { left:2px; }
166
+ .ui-datepicker .ui-datepicker-next { right:2px; }
167
+ .ui-datepicker .ui-datepicker-prev-hover { left:1px; }
168
+ .ui-datepicker .ui-datepicker-next-hover { right:1px; }
169
+ .ui-datepicker .ui-datepicker-prev span, .ui-datepicker .ui-datepicker-next span { display: block; position: absolute; left: 50%; margin-left: -8px; top: 50%; margin-top: -8px; }
170
+ .ui-datepicker .ui-datepicker-title { margin: 0 2.3em; line-height: 1.8em; text-align: center; }
171
+ .ui-datepicker .ui-datepicker-title select { font-size:1em; margin:1px 0; }
172
+ .ui-datepicker select.ui-datepicker-month-year {width: 100%;}
173
+ .ui-datepicker select.ui-datepicker-month,
174
+ .ui-datepicker select.ui-datepicker-year { width: 49%;}
175
+ .ui-datepicker table {width: 100%; font-size: .9em; border-collapse: collapse; margin:0 0 .4em; }
176
+ .ui-datepicker th { padding: .7em .3em; text-align: center; font-weight: bold; border: 0; }
177
+ .ui-datepicker td { border: 0; padding: 1px; }
178
+ .ui-datepicker td span, .ui-datepicker td a { display: block; padding: .2em; text-align: right; text-decoration: none; }
179
+ .ui-datepicker .ui-datepicker-buttonpane { background-image: none; margin: .7em 0 0 0; padding:0 .2em; border-left: 0; border-right: 0; border-bottom: 0; }
180
+ .ui-datepicker .ui-datepicker-buttonpane button { float: right; margin: .5em .2em .4em; cursor: pointer; padding: .2em .6em .3em .6em; width:auto; overflow:visible; }
181
+ .ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current { float:left; }
182
+
183
+ /* with multiple calendars */
184
+ .ui-datepicker.ui-datepicker-multi { width:auto; }
185
+ .ui-datepicker-multi .ui-datepicker-group { float:left; }
186
+ .ui-datepicker-multi .ui-datepicker-group table { width:95%; margin:0 auto .4em; }
187
+ .ui-datepicker-multi-2 .ui-datepicker-group { width:50%; }
188
+ .ui-datepicker-multi-3 .ui-datepicker-group { width:33.3%; }
189
+ .ui-datepicker-multi-4 .ui-datepicker-group { width:25%; }
190
+ .ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header { border-left-width:0; }
191
+ .ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header { border-left-width:0; }
192
+ .ui-datepicker-multi .ui-datepicker-buttonpane { clear:left; }
193
+ .ui-datepicker-row-break { clear:both; width:100%; font-size:0em; }
194
+
195
+ /* RTL support */
196
+ .ui-datepicker-rtl { direction: rtl; }
197
+ .ui-datepicker-rtl .ui-datepicker-prev { right: 2px; left: auto; }
198
+ .ui-datepicker-rtl .ui-datepicker-next { left: 2px; right: auto; }
199
+ .ui-datepicker-rtl .ui-datepicker-prev:hover { right: 1px; left: auto; }
200
+ .ui-datepicker-rtl .ui-datepicker-next:hover { left: 1px; right: auto; }
201
+ .ui-datepicker-rtl .ui-datepicker-buttonpane { clear:right; }
202
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button { float: left; }
203
+ .ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current { float:right; }
204
+ .ui-datepicker-rtl .ui-datepicker-group { float:right; }
205
+ .ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
206
+ .ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header { border-right-width:0; border-left-width:1px; }
207
+
208
+ /* IE6 IFRAME FIX (taken from datepicker 1.5.3 */
209
+ .ui-datepicker-cover {
210
+ display: none; /*sorry for IE5*/
211
+ display/**/: block; /*sorry for IE5*/
212
+ position: absolute; /*must have*/
213
+ z-index: -1; /*must have*/
214
+ filter: mask(); /*must have*/
215
+ top: -4px; /*must have*/
216
+ left: -4px; /*must have*/
217
+ width: 200px; /*must have*/
218
+ height: 200px; /*must have*/
219
+ }/*
220
+ * jQuery UI Dialog 1.8.16
221
+ *
222
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
223
+ * Dual licensed under the MIT or GPL Version 2 licenses.
224
+ * http://jquery.org/license
225
+ *
226
+ * http://docs.jquery.com/UI/Dialog#theming
227
+ */
228
+ .ui-dialog { position: absolute; padding: .2em; width: 300px; overflow: hidden; }
229
+ .ui-dialog .ui-dialog-titlebar { padding: .4em 1em; position: relative; }
230
+ .ui-dialog .ui-dialog-title { float: left; margin: .1em 16px .1em 0; }
231
+ .ui-dialog .ui-dialog-titlebar-close { position: absolute; right: .3em; top: 50%; width: 19px; margin: -10px 0 0 0; padding: 1px; height: 18px; }
232
+ .ui-dialog .ui-dialog-titlebar-close span { display: block; margin: 1px; }
233
+ .ui-dialog .ui-dialog-titlebar-close:hover, .ui-dialog .ui-dialog-titlebar-close:focus { padding: 0; }
234
+ .ui-dialog .ui-dialog-content { position: relative; border: 0; padding: .5em 1em; background: none; overflow: auto; zoom: 1; }
235
+ .ui-dialog .ui-dialog-buttonpane { text-align: left; border-width: 1px 0 0 0; background-image: none; margin: .5em 0 0 0; padding: .3em 1em .5em .4em; }
236
+ .ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset { float: right; }
237
+ .ui-dialog .ui-dialog-buttonpane button { margin: .5em .4em .5em 0; cursor: pointer; }
238
+ .ui-dialog .ui-resizable-se { width: 14px; height: 14px; right: 3px; bottom: 3px; }
239
+ .ui-draggable .ui-dialog-titlebar { cursor: move; }
240
+ /*
241
+ * jQuery UI Progressbar 1.8.16
242
+ *
243
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
244
+ * Dual licensed under the MIT or GPL Version 2 licenses.
245
+ * http://jquery.org/license
246
+ *
247
+ * http://docs.jquery.com/UI/Progressbar#theming
248
+ */
249
+ .ui-progressbar { height:2em; text-align: left; }
250
+ .ui-progressbar .ui-progressbar-value {margin: -1px; height:100%; }/*
251
+ * jQuery UI Resizable 1.8.16
252
+ *
253
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
254
+ * Dual licensed under the MIT or GPL Version 2 licenses.
255
+ * http://jquery.org/license
256
+ *
257
+ * http://docs.jquery.com/UI/Resizable#theming
258
+ */
259
+ .ui-resizable { position: relative;}
260
+ .ui-resizable-handle { position: absolute;font-size: 0.1px;z-index: 99999; display: block; }
261
+ .ui-resizable-disabled .ui-resizable-handle, .ui-resizable-autohide .ui-resizable-handle { display: none; }
262
+ .ui-resizable-n { cursor: n-resize; height: 7px; width: 100%; top: -5px; left: 0; }
263
+ .ui-resizable-s { cursor: s-resize; height: 7px; width: 100%; bottom: -5px; left: 0; }
264
+ .ui-resizable-e { cursor: e-resize; width: 7px; right: -5px; top: 0; height: 100%; }
265
+ .ui-resizable-w { cursor: w-resize; width: 7px; left: -5px; top: 0; height: 100%; }
266
+ .ui-resizable-se { cursor: se-resize; width: 12px; height: 12px; right: 1px; bottom: 1px; }
267
+ .ui-resizable-sw { cursor: sw-resize; width: 9px; height: 9px; left: -5px; bottom: -5px; }
268
+ .ui-resizable-nw { cursor: nw-resize; width: 9px; height: 9px; left: -5px; top: -5px; }
269
+ .ui-resizable-ne { cursor: ne-resize; width: 9px; height: 9px; right: -5px; top: -5px;}/*
270
+ * jQuery UI Selectable 1.8.16
271
+ *
272
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
273
+ * Dual licensed under the MIT or GPL Version 2 licenses.
274
+ * http://jquery.org/license
275
+ *
276
+ * http://docs.jquery.com/UI/Selectable#theming
277
+ */
278
+ .ui-selectable-helper { position: absolute; z-index: 100; border:1px dotted black; }
279
+ /*
280
+ * jQuery UI Slider 1.8.16
281
+ *
282
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
283
+ * Dual licensed under the MIT or GPL Version 2 licenses.
284
+ * http://jquery.org/license
285
+ *
286
+ * http://docs.jquery.com/UI/Slider#theming
287
+ */
288
+ .ui-slider { position: relative; text-align: left; }
289
+ .ui-slider .ui-slider-handle { position: absolute; z-index: 2; width: 1.2em; height: 1.2em; cursor: default; }
290
+ .ui-slider .ui-slider-range { position: absolute; z-index: 1; font-size: .7em; display: block; border: 0; background-position: 0 0; }
291
+
292
+ .ui-slider-horizontal { height: .8em; }
293
+ .ui-slider-horizontal .ui-slider-handle { top: -.3em; margin-left: -.6em; }
294
+ .ui-slider-horizontal .ui-slider-range { top: 0; height: 100%; }
295
+ .ui-slider-horizontal .ui-slider-range-min { left: 0; }
296
+ .ui-slider-horizontal .ui-slider-range-max { right: 0; }
297
+
298
+ .ui-slider-vertical { width: .8em; height: 100px; }
299
+ .ui-slider-vertical .ui-slider-handle { left: -.3em; margin-left: 0; margin-bottom: -.6em; }
300
+ .ui-slider-vertical .ui-slider-range { left: 0; width: 100%; }
301
+ .ui-slider-vertical .ui-slider-range-min { bottom: 0; }
302
+ .ui-slider-vertical .ui-slider-range-max { top: 0; }/*
303
+ * jQuery UI Tabs 1.8.16
304
+ *
305
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
306
+ * Dual licensed under the MIT or GPL Version 2 licenses.
307
+ * http://jquery.org/license
308
+ *
309
+ * http://docs.jquery.com/UI/Tabs#theming
310
+ */
311
+ .ui-tabs { position: relative; padding: .2em; zoom: 1; } /* position: relative prevents IE scroll bug (element with position: relative inside container with overflow: auto appear as "fixed") */
312
+ .ui-tabs .ui-tabs-nav { margin: 0; padding: .2em .2em 0; }
313
+ .ui-tabs .ui-tabs-nav li { list-style: none; float: left; position: relative; top: 1px; margin: 0 .2em 1px 0; border-bottom: 0 !important; padding: 0; white-space: nowrap; }
314
+ .ui-tabs .ui-tabs-nav li a { float: left; padding: .5em 1em; text-decoration: none; }
315
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected { margin-bottom: 0; padding-bottom: 1px; }
316
+ .ui-tabs .ui-tabs-nav li.ui-tabs-selected a, .ui-tabs .ui-tabs-nav li.ui-state-disabled a, .ui-tabs .ui-tabs-nav li.ui-state-processing a { cursor: text; }
317
+ .ui-tabs .ui-tabs-nav li a, .ui-tabs.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-selected a { cursor: pointer; } /* first selector in group seems obsolete, but required to overcome bug in Opera applying cursor: text overall if defined elsewhere... */
318
+ .ui-tabs .ui-tabs-panel { display: block; border-width: 0; padding: 1em 1.4em; background: none; }
319
+ .ui-tabs .ui-tabs-hide { display: none !important; }
320
+ /*
321
+ * jQuery UI CSS Framework 1.8.16
322
+ *
323
+ * Copyright 2011, AUTHORS.txt (http://jqueryui.com/about)
324
+ * Dual licensed under the MIT or GPL Version 2 licenses.
325
+ * http://jquery.org/license
326
+ *
327
+ * http://docs.jquery.com/UI/Theming/API
328
+ *
329
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/
330
+ */
331
+
332
+
333
+ /* Component containers
334
+ ----------------------------------*/
335
+ .ui-widget { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1.1em/*{fsDefault}*/; }
336
+ .ui-widget .ui-widget { font-size: 1em; }
337
+ .ui-widget input, .ui-widget select, .ui-widget textarea, .ui-widget button { font-family: Verdana,Arial,sans-serif/*{ffDefault}*/; font-size: 1em; }
338
+ .ui-widget-content { border: 1px solid #aaaaaa/*{borderColorContent}*/; background: #ffffff/*{bgColorContent}*/ /*url(images/ui-bg_flat_75_ffffff_40x100.png){bgImgUrlContent}*/ 50%/*{bgContentXPos}*/ 50%/*{bgContentYPos}*/ repeat-x/*{bgContentRepeat}*/; color: #222222/*{fcContent}*/; }
339
+ .ui-widget-content a { color: #222222/*{fcContent}*/; }
340
+ .ui-widget-header { border: 1px solid #aaaaaa/*{borderColorHeader}*/; background: #cccccc/*{bgColorHeader}*/ /*url(images/ui-bg_highlight-soft_75_cccccc_1x100.png){bgImgUrlHeader}*/ 50%/*{bgHeaderXPos}*/ 50%/*{bgHeaderYPos}*/ repeat-x/*{bgHeaderRepeat}*/; color: #222222/*{fcHeader}*/; font-weight: bold; }
341
+ .ui-widget-header a { color: #222222/*{fcHeader}*/; }
342
+
343
+ /* Interaction states
344
+ ----------------------------------*/
345
+ .ui-state-default, .ui-widget-content .ui-state-default, .ui-widget-header .ui-state-default { border: 1px solid #d3d3d3/*{borderColorDefault}*/; background: #e6e6e6/*{bgColorDefault}*/ /*url(images/ui-bg_glass_75_e6e6e6_1x400.png){bgImgUrlDefault}*/ 50%/*{bgDefaultXPos}*/ 50%/*{bgDefaultYPos}*/ repeat-x/*{bgDefaultRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #555555/*{fcDefault}*/; }
346
+ .ui-state-default a, .ui-state-default a:link, .ui-state-default a:visited { color: #555555/*{fcDefault}*/; text-decoration: none; }
347
+ .ui-state-hover, .ui-widget-content .ui-state-hover, .ui-widget-header .ui-state-hover, .ui-state-focus, .ui-widget-content .ui-state-focus, .ui-widget-header .ui-state-focus { border: 1px solid #999999/*{borderColorHover}*/; background: #dadada/*{bgColorHover}*/ /*url(images/ui-bg_glass_75_dadada_1x400.png){bgImgUrlHover}*/ 50%/*{bgHoverXPos}*/ 50%/*{bgHoverYPos}*/ repeat-x/*{bgHoverRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcHover}*/; }
348
+ .ui-state-hover a, .ui-state-hover a:hover { color: #212121/*{fcHover}*/; text-decoration: none; }
349
+ .ui-state-active, .ui-widget-content .ui-state-active, .ui-widget-header .ui-state-active { border: 1px solid #aaaaaa/*{borderColorActive}*/; background: #ffffff/*{bgColorActive}*/ /*url(images/ui-bg_glass_65_ffffff_1x400.png){bgImgUrlActive}*/ 50%/*{bgActiveXPos}*/ 50%/*{bgActiveYPos}*/ repeat-x/*{bgActiveRepeat}*/; font-weight: normal/*{fwDefault}*/; color: #212121/*{fcActive}*/; }
350
+ .ui-state-active a, .ui-state-active a:link, .ui-state-active a:visited { color: #212121/*{fcActive}*/; text-decoration: none; }
351
+ .ui-widget :active { outline: none; }
352
+
353
+ /* Interaction Cues
354
+ ----------------------------------*/
355
+ .ui-state-highlight, .ui-widget-content .ui-state-highlight, .ui-widget-header .ui-state-highlight {border: 1px solid #fcefa1/*{borderColorHighlight}*/; background: #fbf9ee/*{bgColorHighlight}*/ /*url(images/ui-bg_glass_55_fbf9ee_1x400.png){bgImgUrlHighlight}*/ 50%/*{bgHighlightXPos}*/ 50%/*{bgHighlightYPos}*/ repeat-x/*{bgHighlightRepeat}*/; color: #363636/*{fcHighlight}*/; }
356
+ .ui-state-highlight a, .ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a { color: #363636/*{fcHighlight}*/; }
357
+ .ui-state-error, .ui-widget-content .ui-state-error, .ui-widget-header .ui-state-error {border: 1px solid #cd0a0a/*{borderColorError}*/; background: #fef1ec/*{bgColorError}*/ /*url(images/ui-bg_glass_95_fef1ec_1x400.png){bgImgUrlError}*/ 50%/*{bgErrorXPos}*/ 50%/*{bgErrorYPos}*/ repeat-x/*{bgErrorRepeat}*/; color: #cd0a0a/*{fcError}*/; }
358
+ .ui-state-error a, .ui-widget-content .ui-state-error a, .ui-widget-header .ui-state-error a { color: #cd0a0a/*{fcError}*/; }
359
+ .ui-state-error-text, .ui-widget-content .ui-state-error-text, .ui-widget-header .ui-state-error-text { color: #cd0a0a/*{fcError}*/; }
360
+ .ui-priority-primary, .ui-widget-content .ui-priority-primary, .ui-widget-header .ui-priority-primary { font-weight: bold; }
361
+ .ui-priority-secondary, .ui-widget-content .ui-priority-secondary, .ui-widget-header .ui-priority-secondary { opacity: .7; filter:Alpha(Opacity=70); font-weight: normal; }
362
+ .ui-state-disabled, .ui-widget-content .ui-state-disabled, .ui-widget-header .ui-state-disabled { opacity: .35; filter:Alpha(Opacity=35); background-image: none; }
363
+
364
+ /* positioning */
365
+ .ui-icon-carat-1-n { background-position: 0 0; }
366
+ .ui-icon-carat-1-ne { background-position: -16px 0; }
367
+ .ui-icon-carat-1-e { background-position: -32px 0; }
368
+ .ui-icon-carat-1-se { background-position: -48px 0; }
369
+ .ui-icon-carat-1-s { background-position: -64px 0; }
370
+ .ui-icon-carat-1-sw { background-position: -80px 0; }
371
+ .ui-icon-carat-1-w { background-position: -96px 0; }
372
+ .ui-icon-carat-1-nw { background-position: -112px 0; }
373
+ .ui-icon-carat-2-n-s { background-position: -128px 0; }
374
+ .ui-icon-carat-2-e-w { background-position: -144px 0; }
375
+ .ui-icon-triangle-1-n { background-position: 0 -16px; }
376
+ .ui-icon-triangle-1-ne { background-position: -16px -16px; }
377
+ .ui-icon-triangle-1-e { background-position: -32px -16px; }
378
+ .ui-icon-triangle-1-se { background-position: -48px -16px; }
379
+ .ui-icon-triangle-1-s { background-position: -64px -16px; }
380
+ .ui-icon-triangle-1-sw { background-position: -80px -16px; }
381
+ .ui-icon-triangle-1-w { background-position: -96px -16px; }
382
+ .ui-icon-triangle-1-nw { background-position: -112px -16px; }
383
+ .ui-icon-triangle-2-n-s { background-position: -128px -16px; }
384
+ .ui-icon-triangle-2-e-w { background-position: -144px -16px; }
385
+ .ui-icon-arrow-1-n { background-position: 0 -32px; }
386
+ .ui-icon-arrow-1-ne { background-position: -16px -32px; }
387
+ .ui-icon-arrow-1-e { background-position: -32px -32px; }
388
+ .ui-icon-arrow-1-se { background-position: -48px -32px; }
389
+ .ui-icon-arrow-1-s { background-position: -64px -32px; }
390
+ .ui-icon-arrow-1-sw { background-position: -80px -32px; }
391
+ .ui-icon-arrow-1-w { background-position: -96px -32px; }
392
+ .ui-icon-arrow-1-nw { background-position: -112px -32px; }
393
+ .ui-icon-arrow-2-n-s { background-position: -128px -32px; }
394
+ .ui-icon-arrow-2-ne-sw { background-position: -144px -32px; }
395
+ .ui-icon-arrow-2-e-w { background-position: -160px -32px; }
396
+ .ui-icon-arrow-2-se-nw { background-position: -176px -32px; }
397
+ .ui-icon-arrowstop-1-n { background-position: -192px -32px; }
398
+ .ui-icon-arrowstop-1-e { background-position: -208px -32px; }
399
+ .ui-icon-arrowstop-1-s { background-position: -224px -32px; }
400
+ .ui-icon-arrowstop-1-w { background-position: -240px -32px; }
401
+ .ui-icon-arrowthick-1-n { background-position: 0 -48px; }
402
+ .ui-icon-arrowthick-1-ne { background-position: -16px -48px; }
403
+ .ui-icon-arrowthick-1-e { background-position: -32px -48px; }
404
+ .ui-icon-arrowthick-1-se { background-position: -48px -48px; }
405
+ .ui-icon-arrowthick-1-s { background-position: -64px -48px; }
406
+ .ui-icon-arrowthick-1-sw { background-position: -80px -48px; }
407
+ .ui-icon-arrowthick-1-w { background-position: -96px -48px; }
408
+ .ui-icon-arrowthick-1-nw { background-position: -112px -48px; }
409
+ .ui-icon-arrowthick-2-n-s { background-position: -128px -48px; }
410
+ .ui-icon-arrowthick-2-ne-sw { background-position: -144px -48px; }
411
+ .ui-icon-arrowthick-2-e-w { background-position: -160px -48px; }
412
+ .ui-icon-arrowthick-2-se-nw { background-position: -176px -48px; }
413
+ .ui-icon-arrowthickstop-1-n { background-position: -192px -48px; }
414
+ .ui-icon-arrowthickstop-1-e { background-position: -208px -48px; }
415
+ .ui-icon-arrowthickstop-1-s { background-position: -224px -48px; }
416
+ .ui-icon-arrowthickstop-1-w { background-position: -240px -48px; }
417
+ .ui-icon-arrowreturnthick-1-w { background-position: 0 -64px; }
418
+ .ui-icon-arrowreturnthick-1-n { background-position: -16px -64px; }
419
+ .ui-icon-arrowreturnthick-1-e { background-position: -32px -64px; }
420
+ .ui-icon-arrowreturnthick-1-s { background-position: -48px -64px; }
421
+ .ui-icon-arrowreturn-1-w { background-position: -64px -64px; }
422
+ .ui-icon-arrowreturn-1-n { background-position: -80px -64px; }
423
+ .ui-icon-arrowreturn-1-e { background-position: -96px -64px; }
424
+ .ui-icon-arrowreturn-1-s { background-position: -112px -64px; }
425
+ .ui-icon-arrowrefresh-1-w { background-position: -128px -64px; }
426
+ .ui-icon-arrowrefresh-1-n { background-position: -144px -64px; }
427
+ .ui-icon-arrowrefresh-1-e { background-position: -160px -64px; }
428
+ .ui-icon-arrowrefresh-1-s { background-position: -176px -64px; }
429
+ .ui-icon-arrow-4 { background-position: 0 -80px; }
430
+ .ui-icon-arrow-4-diag { background-position: -16px -80px; }
431
+ .ui-icon-extlink { background-position: -32px -80px; }
432
+ .ui-icon-newwin { background-position: -48px -80px; }
433
+ .ui-icon-refresh { background-position: -64px -80px; }
434
+ .ui-icon-shuffle { background-position: -80px -80px; }
435
+ .ui-icon-transfer-e-w { background-position: -96px -80px; }
436
+ .ui-icon-transferthick-e-w { background-position: -112px -80px; }
437
+ .ui-icon-folder-collapsed { background-position: 0 -96px; }
438
+ .ui-icon-folder-open { background-position: -16px -96px; }
439
+ .ui-icon-document { background-position: -32px -96px; }
440
+ .ui-icon-document-b { background-position: -48px -96px; }
441
+ .ui-icon-note { background-position: -64px -96px; }
442
+ .ui-icon-mail-closed { background-position: -80px -96px; }
443
+ .ui-icon-mail-open { background-position: -96px -96px; }
444
+ .ui-icon-suitcase { background-position: -112px -96px; }
445
+ .ui-icon-comment { background-position: -128px -96px; }
446
+ .ui-icon-person { background-position: -144px -96px; }
447
+ .ui-icon-print { background-position: -160px -96px; }
448
+ .ui-icon-trash { background-position: -176px -96px; }
449
+ .ui-icon-locked { background-position: -192px -96px; }
450
+ .ui-icon-unlocked { background-position: -208px -96px; }
451
+ .ui-icon-bookmark { background-position: -224px -96px; }
452
+ .ui-icon-tag { background-position: -240px -96px; }
453
+ .ui-icon-home { background-position: 0 -112px; }
454
+ .ui-icon-flag { background-position: -16px -112px; }
455
+ .ui-icon-calendar { background-position: -32px -112px; }
456
+ .ui-icon-cart { background-position: -48px -112px; }
457
+ .ui-icon-pencil { background-position: -64px -112px; }
458
+ .ui-icon-clock { background-position: -80px -112px; }
459
+ .ui-icon-disk { background-position: -96px -112px; }
460
+ .ui-icon-calculator { background-position: -112px -112px; }
461
+ .ui-icon-zoomin { background-position: -128px -112px; }
462
+ .ui-icon-zoomout { background-position: -144px -112px; }
463
+ .ui-icon-search { background-position: -160px -112px; }
464
+ .ui-icon-wrench { background-position: -176px -112px; }
465
+ .ui-icon-gear { background-position: -192px -112px; }
466
+ .ui-icon-heart { background-position: -208px -112px; }
467
+ .ui-icon-star { background-position: -224px -112px; }
468
+ .ui-icon-link { background-position: -240px -112px; }
469
+ .ui-icon-cancel { background-position: 0 -128px; }
470
+ .ui-icon-plus { background-position: -16px -128px; }
471
+ .ui-icon-plusthick { background-position: -32px -128px; }
472
+ .ui-icon-minus { background-position: -48px -128px; }
473
+ .ui-icon-minusthick { background-position: -64px -128px; }
474
+ .ui-icon-close { background-position: -80px -128px; }
475
+ .ui-icon-closethick { background-position: -96px -128px; }
476
+ .ui-icon-key { background-position: -112px -128px; }
477
+ .ui-icon-lightbulb { background-position: -128px -128px; }
478
+ .ui-icon-scissors { background-position: -144px -128px; }
479
+ .ui-icon-clipboard { background-position: -160px -128px; }
480
+ .ui-icon-copy { background-position: -176px -128px; }
481
+ .ui-icon-contact { background-position: -192px -128px; }
482
+ .ui-icon-image { background-position: -208px -128px; }
483
+ .ui-icon-video { background-position: -224px -128px; }
484
+ .ui-icon-script { background-position: -240px -128px; }
485
+ .ui-icon-alert { background-position: 0 -144px; }
486
+ .ui-icon-info { background-position: -16px -144px; }
487
+ .ui-icon-notice { background-position: -32px -144px; }
488
+ .ui-icon-help { background-position: -48px -144px; }
489
+ .ui-icon-check { background-position: -64px -144px; }
490
+ .ui-icon-bullet { background-position: -80px -144px; }
491
+ .ui-icon-radio-off { background-position: -96px -144px; }
492
+ .ui-icon-radio-on { background-position: -112px -144px; }
493
+ .ui-icon-pin-w { background-position: -128px -144px; }
494
+ .ui-icon-pin-s { background-position: -144px -144px; }
495
+ .ui-icon-play { background-position: 0 -160px; }
496
+ .ui-icon-pause { background-position: -16px -160px; }
497
+ .ui-icon-seek-next { background-position: -32px -160px; }
498
+ .ui-icon-seek-prev { background-position: -48px -160px; }
499
+ .ui-icon-seek-end { background-position: -64px -160px; }
500
+ .ui-icon-seek-start { background-position: -80px -160px; }
501
+ /* ui-icon-seek-first is deprecated, use ui-icon-seek-start instead */
502
+ .ui-icon-seek-first { background-position: -80px -160px; }
503
+ .ui-icon-stop { background-position: -96px -160px; }
504
+ .ui-icon-eject { background-position: -112px -160px; }
505
+ .ui-icon-volume-off { background-position: -128px -160px; }
506
+ .ui-icon-volume-on { background-position: -144px -160px; }
507
+ .ui-icon-power { background-position: 0 -176px; }
508
+ .ui-icon-signal-diag { background-position: -16px -176px; }
509
+ .ui-icon-signal { background-position: -32px -176px; }
510
+ .ui-icon-battery-0 { background-position: -48px -176px; }
511
+ .ui-icon-battery-1 { background-position: -64px -176px; }
512
+ .ui-icon-battery-2 { background-position: -80px -176px; }
513
+ .ui-icon-battery-3 { background-position: -96px -176px; }
514
+ .ui-icon-circle-plus { background-position: 0 -192px; }
515
+ .ui-icon-circle-minus { background-position: -16px -192px; }
516
+ .ui-icon-circle-close { background-position: -32px -192px; }
517
+ .ui-icon-circle-triangle-e { background-position: -48px -192px; }
518
+ .ui-icon-circle-triangle-s { background-position: -64px -192px; }
519
+ .ui-icon-circle-triangle-w { background-position: -80px -192px; }
520
+ .ui-icon-circle-triangle-n { background-position: -96px -192px; }
521
+ .ui-icon-circle-arrow-e { background-position: -112px -192px; }
522
+ .ui-icon-circle-arrow-s { background-position: -128px -192px; }
523
+ .ui-icon-circle-arrow-w { background-position: -144px -192px; }
524
+ .ui-icon-circle-arrow-n { background-position: -160px -192px; }
525
+ .ui-icon-circle-zoomin { background-position: -176px -192px; }
526
+ .ui-icon-circle-zoomout { background-position: -192px -192px; }
527
+ .ui-icon-circle-check { background-position: -208px -192px; }
528
+ .ui-icon-circlesmall-plus { background-position: 0 -208px; }
529
+ .ui-icon-circlesmall-minus { background-position: -16px -208px; }
530
+ .ui-icon-circlesmall-close { background-position: -32px -208px; }
531
+ .ui-icon-squaresmall-plus { background-position: -48px -208px; }
532
+ .ui-icon-squaresmall-minus { background-position: -64px -208px; }
533
+ .ui-icon-squaresmall-close { background-position: -80px -208px; }
534
+ .ui-icon-grip-dotted-vertical { background-position: 0 -224px; }
535
+ .ui-icon-grip-dotted-horizontal { background-position: -16px -224px; }
536
+ .ui-icon-grip-solid-vertical { background-position: -32px -224px; }
537
+ .ui-icon-grip-solid-horizontal { background-position: -48px -224px; }
538
+ .ui-icon-gripsmall-diagonal-se { background-position: -64px -224px; }
539
+ .ui-icon-grip-diagonal-se { background-position: -80px -224px; }
540
+
541
+
542
+ /* Misc visuals
543
+ ----------------------------------*/
544
+
545
+ /* Corner radius */
546
+ .ui-corner-all, .ui-corner-top, .ui-corner-left, .ui-corner-tl { -moz-border-radius-topleft: 4px/*{cornerRadius}*/; -webkit-border-top-left-radius: 4px/*{cornerRadius}*/; -khtml-border-top-left-radius: 4px/*{cornerRadius}*/; border-top-left-radius: 4px/*{cornerRadius}*/; }
547
+ .ui-corner-all, .ui-corner-top, .ui-corner-right, .ui-corner-tr { -moz-border-radius-topright: 4px/*{cornerRadius}*/; -webkit-border-top-right-radius: 4px/*{cornerRadius}*/; -khtml-border-top-right-radius: 4px/*{cornerRadius}*/; border-top-right-radius: 4px/*{cornerRadius}*/; }
548
+ .ui-corner-all, .ui-corner-bottom, .ui-corner-left, .ui-corner-bl { -moz-border-radius-bottomleft: 4px/*{cornerRadius}*/; -webkit-border-bottom-left-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-left-radius: 4px/*{cornerRadius}*/; border-bottom-left-radius: 4px/*{cornerRadius}*/; }
549
+ .ui-corner-all, .ui-corner-bottom, .ui-corner-right, .ui-corner-br { -moz-border-radius-bottomright: 4px/*{cornerRadius}*/; -webkit-border-bottom-right-radius: 4px/*{cornerRadius}*/; -khtml-border-bottom-right-radius: 4px/*{cornerRadius}*/; border-bottom-right-radius: 4px/*{cornerRadius}*/; }
550
+
551
+ /* Overlays */
552
+ .ui-widget-overlay { background: #aaaaaa/*{bgColorOverlay}*/ /*url(images/ui-bg_flat_0_aaaaaa_40x100.png){bgImgUrlOverlay}*/ 50%/*{bgOverlayXPos}*/ 50%/*{bgOverlayYPos}*/ repeat-x/*{bgOverlayRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityOverlay}*/; }
553
+ .ui-widget-shadow { margin: -8px/*{offsetTopShadow}*/ 0 0 -8px/*{offsetLeftShadow}*/; padding: 8px/*{thicknessShadow}*/; background: #aaaaaa/*{bgColorShadow}*/ /*url(images/ui-bg_flat_0_aaaaaa_40x100.png){bgImgUrlShadow}*/ 50%/*{bgShadowXPos}*/ 50%/*{bgShadowYPos}*/ repeat-x/*{bgShadowRepeat}*/; opacity: .3;filter:Alpha(Opacity=30)/*{opacityShadow}*/; -moz-border-radius: 8px/*{cornerRadiusShadow}*/; -khtml-border-radius: 8px/*{cornerRadiusShadow}*/; -webkit-border-radius: 8px/*{cornerRadiusShadow}*/; border-radius: 8px/*{cornerRadiusShadow}*/; }
advanced-cache.php ADDED
@@ -0,0 +1,222 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+
3
+ global $cache_stop;
4
+ $cache_stop = false;
5
+
6
+ // Globally used. Here because of the function "theme change"
7
+ $hyper_cache_is_mobile = false;
8
+
9
+ if (defined('IS_PHONE')) {
10
+ $hyper_cache_is_mobile = IS_PHONE;
11
+ } else {
12
+ $hyper_cache_is_mobile = preg_match('#(HC_MOBILE_AGENTS)#i', $_SERVER['HTTP_USER_AGENT']);
13
+ }
14
+
15
+ $hyper_cache_gzip_accepted = isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false;
16
+
17
+ $hyper_cache_is_bot = preg_match('#(googlebot)#i', $_SERVER['HTTP_USER_AGENT']);
18
+
19
+ if (HC_MOBILE === 2 && $hyper_cache_is_mobile) {
20
+ hyper_cache_header('stop - mobile');
21
+ $cache_stop = true;
22
+ return false;
23
+ }
24
+
25
+ // Use this only if you can't or don't want to modify the .htaccess
26
+ if ($_SERVER['REQUEST_METHOD'] == 'POST') {
27
+ $cache_stop = true;
28
+ return false;
29
+ }
30
+
31
+ if ($_SERVER['QUERY_STRING'] != '') {
32
+ hyper_cache_header('stop - query string');
33
+ $cache_stop = true;
34
+ return false;
35
+ }
36
+
37
+ if (defined('SID') && SID != '') {
38
+ $cache_stop = true;
39
+ return false;
40
+ }
41
+
42
+ if (isset($_COOKIE['cache_disable'])) {
43
+ $cache_stop = true;
44
+ return false;
45
+ }
46
+
47
+ if (!$hyper_cache_is_bot || $hyper_cache_is_bot && !HC_BOTS_IGNORE_NOCACHE) {
48
+ if (isset($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] == 'no-cache') {
49
+ hyper_cache_header('stop - no cache header');
50
+ $cache_stop = true;
51
+ return false;
52
+ }
53
+
54
+ if (isset($_SERVER['HTTP_PRAGMA']) && $_SERVER['HTTP_PRAGMA'] == 'no-cache') {
55
+ hyper_cache_header('stop - no cache header');
56
+ $cache_stop = true;
57
+ return false;
58
+ }
59
+ }
60
+
61
+ // Used globally
62
+ $hyper_cache_is_ssl = false;
63
+
64
+ if (isset($_SERVER['HTTPS'])) {
65
+ if ('on' == strtolower($_SERVER['HTTPS']) || '1' == $_SERVER['HTTPS']) {
66
+ $hyper_cache_is_ssl = true;
67
+ } else if (isset($_SERVER['SERVER_PORT']) && ( '443' == $_SERVER['SERVER_PORT'] )) {
68
+ $hyper_cache_is_ssl = true;
69
+ }
70
+ }
71
+
72
+ if (HC_HTTPS === 0 && $hyper_cache_is_ssl) {
73
+ hyper_cache_header('stop - https');
74
+ $cache_stop = true;
75
+ return false;
76
+ }
77
+
78
+ if (HC_REJECT_AGENTS_ENABLED && isset($_SERVER['HTTP_USER_AGENT'])) {
79
+ if (preg_match('#(HC_REJECT_AGENTS)#i', strtolower($_SERVER['HTTP_USER_AGENT']))) {
80
+ hyper_cache_header('stop - user agent');
81
+ $cache_stop = true;
82
+ return false;
83
+ }
84
+ }
85
+
86
+ if (!empty($_COOKIE)) {
87
+ foreach ($_COOKIE as $n => $v) {
88
+ if (substr($n, 0, 20) == 'wordpress_logged_in_') {
89
+ hyper_cache_header('stop - logged in cookie');
90
+ $cache_stop = true;
91
+ return false;
92
+ }
93
+
94
+ if (substr($n, 0, 12) == 'wp-postpass_') {
95
+ hyper_cache_header('stop - password cookie');
96
+ $cache_stop = true;
97
+ return false;
98
+ }
99
+
100
+ if (HC_REJECT_COMMENT_AUTHORS && substr($n, 0, 14) == 'comment_author') {
101
+ hyper_cache_header('stop - comment author cookie');
102
+ $cache_stop = true;
103
+ return false;
104
+ }
105
+ if (HC_REJECT_COOKIES_ENABLED) {
106
+ if (preg_match('#(HC_REJECT_COOKIES)#i', strtolower($n))) {
107
+ hyper_cache_header('stop - bypass cookie');
108
+ $cache_stop = true;
109
+ return false;
110
+ }
111
+ }
112
+ }
113
+ }
114
+
115
+ // Globally used
116
+ $hyper_cache_group = '';
117
+
118
+ if (HC_HTTPS === 1 && $hyper_cache_is_ssl) {
119
+ $hyper_cache_group .= '-https';
120
+ }
121
+
122
+ if (HC_MOBILE === 1 && $hyper_cache_is_mobile) {
123
+ $hyper_cache_group .= '-mobile';
124
+ }
125
+
126
+ //$hc_file = ABSPATH . 'wp-content/cache/lite-cache' . $_SERVER['REQUEST_URI'] . '/index' . $hc_group . '.html';
127
+ $hc_uri = hyper_cache_sanitize_uri($_SERVER['REQUEST_URI']);
128
+
129
+ $hc_file = 'HC_FOLDER/' . strtolower($_SERVER['HTTP_HOST']) . $hc_uri . '/index' . $hyper_cache_group . '.html';
130
+ if (HC_GZIP == 1 && $hyper_cache_gzip_accepted) {
131
+ $hc_gzip = true;
132
+ } else {
133
+ $hc_gzip = false;
134
+ }
135
+
136
+ if ($hc_gzip) {
137
+ $hc_file .= '.gz';
138
+ }
139
+
140
+ if (!is_file($hc_file)) {
141
+ hyper_cache_header('continue - no file');
142
+ return false;
143
+ }
144
+
145
+ $hc_file_time = filemtime($hc_file);
146
+
147
+ if (HC_SERVE_EXPIRED_TO_BOT && $hyper_cache_is_bot) {
148
+ hyper_cache_header('hit - bot');
149
+ } else {
150
+ if (HC_MAX_AGE > 0 && $hc_file_time < time() - (HC_MAX_AGE * 3600)) {
151
+ hyper_cache_header('continue - old file');
152
+ return false;
153
+ }
154
+ }
155
+ if (array_key_exists("HTTP_IF_MODIFIED_SINCE", $_SERVER)) {
156
+ $hc_if_modified_since = strtotime(preg_replace('/;.*$/', '', $_SERVER["HTTP_IF_MODIFIED_SINCE"]));
157
+ if ($hc_if_modified_since >= $hc_file_time) {
158
+ header("HTTP/1.0 304 Not Modified");
159
+ flush();
160
+ die();
161
+ }
162
+ }
163
+
164
+ header('Content-Type: text/html;charset=UTF-8');
165
+ header('Last-Modified: ' . gmdate("D, d M Y H:i:s", $hc_file_time) . ' GMT');
166
+
167
+ if (HC_MOBILE === 0) {
168
+ header('Vary: Accept-Encoding');
169
+ } else {
170
+ header('Vary: Accept-Encoding,User-Agent');
171
+ }
172
+
173
+ if (HC_BROWSER_CACHE) {
174
+ if (HC_BROWSER_CACHE_HOURS != 0) {
175
+ $hc_cache_max_age = HC_BROWSER_CACHE_HOURS * 3600;
176
+ } else {
177
+ // If there is not a default expire time, use 24 hours.
178
+ if (HC_MAX_AGE > 0) {
179
+ $hc_cache_max_age = time() + (HC_MAX_AGE * 3600) - $hc_file_time;
180
+ } else {
181
+ $hc_cache_max_age = time() + (24 * 3600) - $hc_file_time;
182
+ }
183
+ }
184
+ header('Cache-Control: private, max-age=' . $hc_cache_max_age, false);
185
+ //header('Expires: ' . gmdate("D, d M Y H:i:s", time() + $hc_cache_max_age) . " GMT");
186
+ } else {
187
+ header('Cache-Control: private, max-age=0, no-cache, no-transform', false);
188
+ //header('Pragma: no-cache');
189
+ }
190
+
191
+ if ($hc_gzip) {
192
+ hyper_cache_header('hit - gzip' . $hyper_cache_group);
193
+ header('Content-Encoding: gzip');
194
+ header('Content-Length: ' . filesize($hc_file));
195
+ } else {
196
+ hyper_cache_header('hit - plain' . $hyper_cache_group);
197
+ header('Content-Length: ' . filesize($hc_file));
198
+ }
199
+
200
+ if (HC_READFILE) {
201
+ readfile($hc_file);
202
+ } else {
203
+ echo file_get_contents($hc_file);
204
+ }
205
+ die();
206
+
207
+ function hyper_cache_sanitize_uri($uri) {
208
+ $uri = preg_replace('/[^a-zA-Z0-9\/\-_]+/', '_', $uri);
209
+ $uri = preg_replace('/\/+/', '/', $uri);
210
+ //$uri = rtrim($uri, '.-_/');
211
+ if (empty($uri) || $uri[0] != '/') {
212
+ $uri = '/' . $uri;
213
+ }
214
+ if (strlen($uri) > 1 && substr($uri, -1, 1) == '/') {
215
+ $uri = rtrim($uri, '/') . '_';
216
+ }
217
+ return $uri;
218
+ }
219
+
220
+ function hyper_cache_header($value) {
221
+ header('X-Hyper-Cache: ' . $value, false);
222
+ }
cache.php DELETED
@@ -1,367 +0,0 @@
1
- <?php
2
-
3
- global $hyper_cache_stop;
4
-
5
- $hyper_cache_stop = false;
6
-
7
- // If no-cache header support is enabled and the browser explicitly requests a fresh page, do not cache
8
- if ($hyper_cache_nocache &&
9
- ((!empty($_SERVER['HTTP_CACHE_CONTROL']) && $_SERVER['HTTP_CACHE_CONTROL'] == 'no-cache') ||
10
- (!empty($_SERVER['HTTP_PRAGMA']) && $_SERVER['HTTP_PRAGMA'] == 'no-cache'))) return hyper_cache_exit();
11
-
12
- // Do not cache post request (comments, plugins and so on)
13
- if ($_SERVER["REQUEST_METHOD"] == 'POST') return hyper_cache_exit();
14
-
15
- // Try to avoid enabling the cache if sessions are managed with request parameters and a session is active
16
- if (defined('SID') && SID != '') return hyper_cache_exit();
17
-
18
- $hyper_uri = $_SERVER['REQUEST_URI'];
19
- $hyper_qs = strpos($hyper_uri, '?');
20
-
21
- if ($hyper_qs !== false) {
22
- if ($hyper_cache_strip_qs) $hyper_uri = substr($hyper_uri, 0, $hyper_qs);
23
- else if (!$hyper_cache_cache_qs) return hyper_cache_exit();
24
- }
25
-
26
- if (strpos($hyper_uri, 'robots.txt') !== false) return hyper_cache_exit();
27
-
28
- // Checks for rejected url
29
- if ($hyper_cache_reject !== false) {
30
- foreach($hyper_cache_reject as $uri) {
31
- if (substr($uri, 0, 1) == '"') {
32
- if ($uri == '"' . $hyper_uri . '"') return hyper_cache_exit();
33
- }
34
- if (substr($hyper_uri, 0, strlen($uri)) == $uri) return hyper_cache_exit();
35
- }
36
- }
37
-
38
- if ($hyper_cache_reject_agents !== false) {
39
- $hyper_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
40
- foreach ($hyper_cache_reject_agents as $hyper_a) {
41
- if (strpos($hyper_agent, $hyper_a) !== false) return hyper_cache_exit();
42
- }
43
- }
44
-
45
- // Do nested cycles in this order, usually no cookies are specified
46
- if ($hyper_cache_reject_cookies !== false) {
47
- foreach ($hyper_cache_reject_cookies as $hyper_c) {
48
- foreach ($_COOKIE as $n=>$v) {
49
- if (substr($n, 0, strlen($hyper_c)) == $hyper_c) return hyper_cache_exit();
50
- }
51
- }
52
- }
53
-
54
- // Do not use or cache pages when a wordpress user is logged on
55
-
56
- foreach ($_COOKIE as $n=>$v) {
57
- // If it's required to bypass the cache when the visitor is a commenter, stop.
58
- if ($hyper_cache_comment && substr($n, 0, 15) == 'comment_author_') return hyper_cache_exit();
59
-
60
- // SHIT!!! This test cookie makes to cache not work!!!
61
- if ($n == 'wordpress_test_cookie') continue;
62
- // wp 2.5 and wp 2.3 have different cookie prefix, skip cache if a post password cookie is present, also
63
- if (substr($n, 0, 14) == 'wordpressuser_' || substr($n, 0, 10) == 'wordpress_' || substr($n, 0, 12) == 'wp-postpass_') {
64
- return hyper_cache_exit();
65
- }
66
- }
67
-
68
- // Do not cache WP pages, even if those calls typically don't go throught this script
69
- if (strpos($hyper_uri, '/wp-') !== false) return hyper_cache_exit();
70
-
71
- // Multisite
72
- if (function_exists('is_multisite') && is_multisite() && strpos($hyper_uri, '/files/') !== false) return hyper_cache_exit();
73
-
74
- // Prefix host, and for wordpress 'pretty URLs' strip trailing slash (e.g. '/my-post/' -> 'my-site.com/my-post')
75
- $hyper_uri = $_SERVER['HTTP_HOST'] . $hyper_uri;
76
-
77
- // The name of the file with html and other data
78
- $hyper_cache_name = md5($hyper_uri);
79
- $hc_file = $hyper_cache_path . $hyper_cache_name . hyper_mobile_type() . '.dat';
80
-
81
- if (!file_exists($hc_file)) {
82
- hyper_cache_start(false);
83
- return;
84
- }
85
-
86
- $hc_file_time = @filemtime($hc_file);
87
- $hc_file_age = time() - $hc_file_time;
88
-
89
- if ($hc_file_age > $hyper_cache_timeout) {
90
- hyper_cache_start();
91
- return;
92
- }
93
-
94
- $hc_invalidation_time = @filemtime($hyper_cache_path . '_global.dat');
95
- if ($hc_invalidation_time && $hc_file_time < $hc_invalidation_time) {
96
- hyper_cache_start();
97
- return;
98
- }
99
-
100
- if (array_key_exists("HTTP_IF_MODIFIED_SINCE", $_SERVER)) {
101
- $if_modified_since = strtotime(preg_replace('/;.*$/', '', $_SERVER["HTTP_IF_MODIFIED_SINCE"]));
102
- if ($if_modified_since >= $hc_file_time) {
103
- header($_SERVER['SERVER_PROTOCOL'] . " 304 Not Modified");
104
- flush();
105
- die();
106
- }
107
- }
108
-
109
- // Load it and check is it's still valid
110
- $hyper_data = @unserialize(file_get_contents($hc_file));
111
-
112
- if (!$hyper_data) {
113
- hyper_cache_start();
114
- return;
115
- }
116
-
117
- if ($hyper_data['type'] == 'home' || $hyper_data['type'] == 'archive') {
118
-
119
- $hc_invalidation_archive_file = @filemtime($hyper_cache_path . '_archives.dat');
120
- if ($hc_invalidation_archive_file && $hc_file_time < $hc_invalidation_archive_file) {
121
- hyper_cache_start();
122
- return;
123
- }
124
- }
125
-
126
- // Valid cache file check ends here
127
-
128
- if (!empty($hyper_data['location'])) {
129
- header('Location: ' . $hyper_data['location']);
130
- flush();
131
- die();
132
- }
133
-
134
- // It's time to serve the cached page
135
-
136
- if (!$hyper_cache_browsercache) {
137
- // True if browser caching NOT enabled (default)
138
- header('Cache-Control: no-cache, must-revalidate, max-age=0');
139
- header('Pragma: no-cache');
140
- header('Expires: Wed, 11 Jan 1984 05:00:00 GMT');
141
- }
142
- else {
143
- $maxage = $hyper_cache_timeout - $hc_file_age;
144
- header('Cache-Control: max-age=' . $maxage);
145
- header('Expires: ' . gmdate("D, d M Y H:i:s", time() + $maxage) . " GMT");
146
- }
147
-
148
- // True if user ask to NOT send Last-Modified
149
- if (!$hyper_cache_lastmodified) {
150
- header('Last-Modified: ' . gmdate("D, d M Y H:i:s", $hc_file_time). " GMT");
151
- }
152
-
153
- header('Content-Type: ' . $hyper_data['mime']);
154
- if (isset($hyper_data['status']) && $hyper_data['status'] == 404) header($_SERVER['SERVER_PROTOCOL'] . " 404 Not Found");
155
-
156
- // Send the cached html
157
- if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false &&
158
- (($hyper_cache_gzip && !empty($hyper_data['gz'])) || ($hyper_cache_gzip_on_the_fly && function_exists('gzencode')))) {
159
- header('Content-Encoding: gzip');
160
- header('Vary: Accept-Encoding');
161
- if (!empty($hyper_data['gz'])) {
162
- echo $hyper_data['gz'];
163
- }
164
- else {
165
- echo gzencode($hyper_data['html']);
166
- }
167
- }
168
- else {
169
- // No compression accepted, check if we have the plain html or
170
- // decompress the compressed one.
171
- if (!empty($hyper_data['html'])) {
172
- //header('Content-Length: ' . strlen($hyper_data['html']));
173
- echo $hyper_data['html'];
174
- }
175
- else if (function_exists('gzinflate')) {
176
- $buffer = hyper_cache_gzdecode($hyper_data['gz']);
177
- if ($buffer === false) echo 'Error retrieving the content';
178
- else echo $buffer;
179
- }
180
- else {
181
- // Cannot decode compressed data, serve fresh page
182
- return false;
183
- }
184
- }
185
- flush();
186
- die();
187
-
188
-
189
- function hyper_cache_start($delete=true) {
190
- global $hc_file;
191
-
192
- if ($delete) @unlink($hc_file);
193
- foreach ($_COOKIE as $n=>$v ) {
194
- if (substr($n, 0, 14) == 'comment_author') {
195
- unset($_COOKIE[$n]);
196
- }
197
- }
198
- ob_start('hyper_cache_callback');
199
- }
200
-
201
- // From here Wordpress starts to process the request
202
-
203
- // Called whenever the page generation is ended
204
- function hyper_cache_callback($buffer) {
205
- global $hyper_cache_notfound, $hyper_cache_stop, $hyper_cache_charset, $hyper_cache_home, $hyper_cache_redirects, $hyper_redirect, $hc_file, $hyper_cache_name, $hyper_cache_browsercache, $hyper_cache_timeout, $hyper_cache_lastmodified, $hyper_cache_gzip, $hyper_cache_gzip_on_the_fly;
206
-
207
- if (!function_exists('is_home')) return $buffer;
208
- if (!function_exists('is_front_page')) return $buffer;
209
-
210
- if (function_exists('apply_filters')) $buffer = apply_filters('hyper_cache_buffer', $buffer);
211
-
212
- if ($hyper_cache_stop) return $buffer;
213
-
214
- if (!$hyper_cache_notfound && is_404()) {
215
- return $buffer;
216
- }
217
-
218
- if (strpos($buffer, '</body>') === false) return $buffer;
219
-
220
- // WP is sending a redirect
221
- if ($hyper_redirect) {
222
- if ($hyper_cache_redirects) {
223
- $data['location'] = $hyper_redirect;
224
- hyper_cache_write($data);
225
- }
226
- return $buffer;
227
- }
228
-
229
- if ((is_home() || is_front_page()) && $hyper_cache_home) {
230
- return $buffer;
231
- }
232
-
233
- if (is_feed() && !$hyper_cache_feed) {
234
- return $buffer;
235
- }
236
-
237
- if (is_home() || is_front_page()) $data['type'] = 'home';
238
- else if (is_feed()) $data['type'] = 'feed';
239
- else if (is_archive()) $data['type'] = 'archive';
240
- else if (is_single()) $data['type'] = 'single';
241
- else if (is_page()) $data['type'] = 'page';
242
- $buffer = trim($buffer);
243
-
244
- // Can be a trackback or other things without a body. We do not cache them, WP needs to get those calls.
245
- if (strlen($buffer) == 0) return '';
246
-
247
- if (!$hyper_cache_charset) $hyper_cache_charset = 'UTF-8';
248
-
249
- if (is_feed()) {
250
- $data['mime'] = 'text/xml;charset=' . $hyper_cache_charset;
251
- }
252
- else {
253
- $data['mime'] = 'text/html;charset=' . $hyper_cache_charset;
254
- }
255
-
256
- $buffer .= '<!-- hyper cache: ' . $hyper_cache_name . ' ' . date('y-m-d h:i:s') .' -->';
257
-
258
- $data['html'] = $buffer;
259
-
260
- if (is_404()) $data['status'] = 404;
261
-
262
- hyper_cache_write($data);
263
-
264
- if ($hyper_cache_browsercache) {
265
- header('Cache-Control: max-age=' . $hyper_cache_timeout);
266
- header('Expires: ' . gmdate("D, d M Y H:i:s", time() + $hyper_cache_timeout) . " GMT");
267
- }
268
-
269
- // True if user ask to NOT send Last-Modified
270
- if (!$hyper_cache_lastmodified) {
271
- header('Last-Modified: ' . gmdate("D, d M Y H:i:s", @filemtime($hc_file)). " GMT");
272
- }
273
-
274
- if (isset($_SERVER['HTTP_ACCEPT_ENCODING']) && strpos($_SERVER['HTTP_ACCEPT_ENCODING'], 'gzip') !== false &&
275
- (($hyper_cache_gzip && !empty($data['gz'])) || ($hyper_cache_gzip_on_the_fly && !empty($data['html']) && function_exists('gzencode')))) {
276
- header('Content-Encoding: gzip');
277
- header('Vary: Accept-Encoding');
278
- if (empty($data['gz'])) {
279
- $data['gz'] = gzencode($data['html']);
280
- }
281
- return $data['gz'];
282
- }
283
-
284
- return $buffer;
285
- }
286
-
287
- function hyper_cache_write(&$data) {
288
- global $hc_file, $hyper_cache_store_compressed;
289
-
290
- $data['uri'] = $_SERVER['REQUEST_URI'];
291
-
292
- // Look if we need the compressed version
293
- if ($hyper_cache_store_compressed && !empty($data['html']) && function_exists('gzencode')) {
294
- $data['gz'] = gzencode($data['html']);
295
- if ($data['gz']) unset($data['html']);
296
- }
297
- $file = fopen($hc_file, 'w');
298
- fwrite($file, serialize($data));
299
- fclose($file);
300
- }
301
-
302
- function hyper_mobile_type() {
303
- global $hyper_cache_mobile, $hyper_cache_mobile_agents, $hyper_cache_plugin_mobile_pack;
304
-
305
- if ($hyper_cache_plugin_mobile_pack) {
306
- @include_once ABSPATH . 'wp-content/plugins/wordpress-mobile-pack/plugins/wpmp_switcher/lite_detection.php';
307
- if (function_exists('lite_detection')) {
308
- $is_mobile = lite_detection();
309
- if (!$is_mobile) return '';
310
- include_once ABSPATH . 'wp-content/plugins/wordpress-mobile-pack/themes/mobile_pack_base/group_detection.php';
311
- if (function_exists('group_detection')) {
312
- return 'mobile' . group_detection();
313
- }
314
- else return 'mobile';
315
- }
316
- }
317
-
318
- if (!isset($hyper_cache_mobile) || $hyper_cache_mobile_agents === false) return '';
319
-
320
- $hyper_agent = strtolower($_SERVER['HTTP_USER_AGENT']);
321
- if (!empty($hyper_cache_mobile_agents)) {
322
- foreach ($hyper_cache_mobile_agents as $hyper_a) {
323
- if (strpos($hyper_agent, $hyper_a) !== false) {
324
- if (strpos($hyper_agent, 'iphone') || strpos($hyper_agent, 'ipod')) {
325
- return 'iphone';
326
- }
327
- else {
328
- return 'pda';
329
- }
330
- }
331
- }
332
- }
333
- return '';
334
- }
335
-
336
- function hyper_cache_gzdecode ($data) {
337
-
338
- $flags = ord(substr($data, 3, 1));
339
- $headerlen = 10;
340
- $extralen = 0;
341
-
342
- $filenamelen = 0;
343
- if ($flags & 4) {
344
- $extralen = unpack('v' ,substr($data, 10, 2));
345
-
346
- $extralen = $extralen[1];
347
- $headerlen += 2 + $extralen;
348
- }
349
- if ($flags & 8) // Filename
350
-
351
- $headerlen = strpos($data, chr(0), $headerlen) + 1;
352
- if ($flags & 16) // Comment
353
-
354
- $headerlen = strpos($data, chr(0), $headerlen) + 1;
355
- if ($flags & 2) // CRC at end of file
356
-
357
- $headerlen += 2;
358
- $unpacked = gzinflate(substr($data, $headerlen));
359
- return $unpacked;
360
- }
361
-
362
- function hyper_cache_exit() {
363
- global $hyper_cache_gzip_on_the_fly;
364
-
365
- if ($hyper_cache_gzip_on_the_fly && extension_loaded('zlib')) ob_start('ob_gzhandler');
366
- return false;
367
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
header.php DELETED
@@ -1,15 +0,0 @@
1
- <table cellpadding="0" cellspacing="0" border="0" style="border: 1px solid #ddd; background-color: #f7f7ff; padding: 10px;">
2
- <tr>
3
- <td valign="middle" align="left" width="110">
4
- <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RJB428Z5KJPR4" target="_blank"><img src="http://www.satollo.net/images/donate.gif"/></a>
5
- </td>
6
- <td valign="top" align="left">
7
- <strong>Your donation is like a diamond: it's forever</strong>.
8
- More about <a href="http://www.satollo.net/donations" target="_blank">donations I receive</a>.
9
- See <a href="http://www.satollo.net/plugins" target="_blank"><strong>other plugins</strong></a> that can be useful for your blog.
10
- <form method="post" action="http://www.satollo.net/subscribe" target="_blank">
11
- Subscribe my newsletter: <input name="ne" value="Your email" onclick="if (this.defaultValue==this.value) this.value=''" onblur="if (this.value=='') this.value=this.defaultValue"> <input type="hidden" value="s" name="na"> <input type="hidden" value="plugin" name="nr"><input type="submit" value="Subscribe">
12
- </form>
13
- </td>
14
- </tr>
15
- </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
hyper-cache-fr_FR.mo DELETED
Binary file
hyper-cache-fr_FR.po DELETED
@@ -1,368 +0,0 @@
1
- # Copyright (C) 2012
2
- # This file is distributed under the same license as the package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: Hyper Cache FR\n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/hyper-cache\n"
7
- "POT-Creation-Date: 2012-01-25 22:02:42+00:00\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2012-06-15 18:02+0100\n"
12
- "Last-Translator: QuentinTurquet.com <quentin.turquet@gmail.com>\n"
13
- "Language-Team: TradPress.fr <tradpress@gmail.com>\n"
14
- "X-Poedit-Language: French\n"
15
- "X-Poedit-Country: FRANCE\n"
16
-
17
- #: options.php:92
18
- msgid "You must add to the file wp-config.php (at its beginning after the &lt;?php) the line of code: <code>define('WP_CACHE', true);</code>."
19
- msgstr "Vous devez ajouter au fichier wp-config (au début après le &lt;?php) la ligne de code : <code>define('WP_CACHE', true);</code>."
20
-
21
- #: options.php:103
22
- msgid "<p><strong>Options saved BUT not active because Hyper Cache was not able to update the file wp-content/advanced-cache.php (is it writable?).</strong></p>"
23
- msgstr "<p><strong>Les options ont été enregistrées MAIS non actives, car Hyper Cache n'est pas capable de mettre à jour le fichier wp-content/advanced-cache.php (est-il accessible en écriture ?).</strong></p>"
24
-
25
- #: options.php:109
26
- msgid "<p><strong>Hyper Cache was not able to create the folder \"wp-content/cache/hyper-cache\". Make it manually setting permissions to 777.</strong></p>"
27
- msgstr "<p><strong>Hyper Cache n'est pas capable de créer le dossier \"wp-content/cache/hyper-cache\". Mettez manuellement les permissions en CHMOD 777.</strong></p>"
28
-
29
- #: options.php:114
30
- msgid "You can find more details about configurations and working mode on <a href=\"%s\">Hyper Cache official page</a>."
31
- msgstr "Vous pouvez trouver plus de détails à propos des configurations sur <a href=\"%s\">la page officielle Hyper Cache</a>."
32
-
33
- #: options.php:123
34
- msgid "Clear cache"
35
- msgstr "Nettoyer le cache"
36
-
37
- #: options.php:126
38
- msgid "Cache status"
39
- msgstr "Statut du cache"
40
-
41
- #: options.php:129
42
- msgid "Files in cache (valid and expired)"
43
- msgstr "Fichiers en cache (valides et expirés)"
44
-
45
- #: options.php:133
46
- msgid "Cleaning process"
47
- msgstr "Procédure de nettoyage"
48
-
49
- #: options.php:135
50
- msgid "Next run on: "
51
- msgstr "Prochaine mise à jour le :"
52
-
53
- #: options.php:142
54
- msgid "The cleaning process runs hourly and it's ok to run it hourly: that grant you an efficient cache. If above there is not a valid next run time, wait 10 seconds and reenter this panel. If nothing change, try to deactivate and reactivate Hyper Cache."
55
- msgstr "Le processus de nettoyage fonctionne toutes les heures et est actif pour fonctionner à chaque heure : cela garantie un cache efficace. Si, ci-dessus, le temps entré pour le prochain fonctionnement n'est pas valide, attendez 10 secondes et réentrez-le dans le panel. Si rien ne change, essayez de désactiver et de réactiver Hyper Cache."
56
-
57
- #: options.php:149
58
- msgid "Configuration"
59
- msgstr "Configuration"
60
-
61
- #: options.php:154
62
- msgid "Cached pages timeout"
63
- msgstr "Pages en cache (temps écoulé)"
64
-
65
- #: options.php:157
66
- msgid "minutes"
67
- msgstr "minutes"
68
-
69
- #: options.php:159
70
- msgid ""
71
- "Minutes a cached page is valid and served to users. A zero value means a cached page is\r\n"
72
- " valid forever."
73
- msgstr ""
74
- "Les minutes d'une page mise en cache sont valides et servies aux utilisateurs. Une valeur nulle signifie qu'une page mise en cache est\r\n"
75
- " valide pour toujours."
76
-
77
- #: options.php:161
78
- msgid ""
79
- "If a cached page is older than specified value (expired) it is no more used and\r\n"
80
- " will be regenerated on next request of it."
81
- msgstr ""
82
- "Si une page mise en cache est plus ancienne que la valeur spécifiée (expirée) Ce n'est plus utilisé et\r\n"
83
- " sera de nouveau générée lors de la requête suivante."
84
-
85
- #: options.php:163
86
- msgid "720 minutes is half a day, 1440 is a full day and so on."
87
- msgstr "720 minutes est la moitié d'une journée, 1440 est un jour entier."
88
-
89
- #: options.php:169
90
- msgid "Cache invalidation mode"
91
- msgstr "Mode invalide du cache"
92
-
93
- #: options.php:172
94
- msgid "All cached pages"
95
- msgstr "Toutes les pages en cache"
96
-
97
- #: options.php:173
98
- msgid "Only modified posts"
99
- msgstr "Seulement les articles modifiés"
100
-
101
- #: options.php:174
102
- msgid "Only modified pages"
103
- msgstr "Seulement les pages modifiées"
104
-
105
- #: options.php:175
106
- msgid "Nothing"
107
- msgstr "Rien"
108
-
109
- #: options.php:179
110
- msgid "Invalidate home, archives, categories on single post invalidation"
111
- msgstr "Invalider l'accueil, archives, catégories sur les articles invalidés."
112
-
113
- #: options.php:182
114
- msgid "\"Invalidation\" is the process of deleting cached pages when they are no more valid."
115
- msgstr "\"Invalidation\" est un processus de suppression des pages mises en cache lorsqu'elles ne sont plus valides."
116
-
117
- #: options.php:183
118
- msgid ""
119
- "Invalidation process is started when blog contents are modified (new post, post update, new comment,...) so\r\n"
120
- " one or more cached pages need to be refreshed to get that new content."
121
- msgstr ""
122
- "Le processus d'invalidation est mis en marche lorsque le contenu du blog est modifié (nouvel article, mise à jour d'un article, commentaire,...) donc\r\n"
123
- " une ou plusieurs pages mises en chage doivent être rafraîchies pour afficher le nouveau contenu."
124
-
125
- #: options.php:185
126
- msgid ""
127
- "A new comment submission or a comment moderation is considered like a post modification\r\n"
128
- " where the post is the one the comment is relative to."
129
- msgstr ""
130
- "La soumission d'un commentaire ou la modération d'un commentaire est considérée comme une modification de l'article\r\n"
131
- " où l'article est celui où le commentaire en question se situe."
132
-
133
- #: options.php:192
134
- msgid "Disable cache for commenters"
135
- msgstr "Désactiver le cache pour les commentaires"
136
-
137
- #: options.php:196
138
- msgid ""
139
- "When users leave comments, WordPress show pages with their comments even if in moderation\r\n"
140
- " (and not visible to others) and pre-fills the comment form."
141
- msgstr ""
142
- "Lorsque des utilisateurs laissent des commentaires, WordPress affiche les pages comme si les commentaires étaient en attente de validation\r\n"
143
- " (et ne sont pas visibles pour les autres) et pré-rempli le formulaire de commentaire."
144
-
145
- #: options.php:198
146
- msgid "If you want to keep those features, enable this option."
147
- msgstr "Si vous voulez garder ces fonctions, activez cette option."
148
-
149
- #: options.php:199
150
- msgid "The caching system will be less efficient but the blog more usable."
151
- msgstr "Le système de cache sera moins efficace, mais le blog plus utilisable."
152
-
153
- #: options.php:206
154
- msgid "Feeds caching"
155
- msgstr "Fils mis en cache"
156
-
157
- #: options.php:210
158
- msgid "When enabled the blog feeds will be cache as well."
159
- msgstr "Lorsqu'activé, les fils du blog seront aussi en cache."
160
-
161
- #: options.php:211
162
- msgid ""
163
- "Usually this options has to be left unchecked but if your blog is rather static,\r\n"
164
- " you can enable it and have a bit more efficiency"
165
- msgstr ""
166
- "D'habitude ces options doivent rester décochées, mais si votre blog est plutôt statique,\r\n"
167
- " vous pouvez l'activer pour gagner un petit peu de rapidité."
168
-
169
- #: options.php:218
170
- #: options.php:256
171
- #: options.php:297
172
- #: options.php:449
173
- msgid "Update"
174
- msgstr "Mettre à jour"
175
-
176
- #: options.php:221
177
- msgid "Configuration for mobile devices"
178
- msgstr "Configuration pour les téléphones portables"
179
-
180
- #: options.php:234
181
- msgid "Detect mobile devices"
182
- msgstr "Détecter les téléphones portables"
183
-
184
- #: options.php:238
185
- msgid "When enabled mobile devices will be detected and the cached page stored under different name."
186
- msgstr "Lorsqu'un appareil mobile valide sera détecté, la page mise en cache sera stockée sous un nom différent."
187
-
188
- #: options.php:239
189
- msgid "This makes blogs with different themes for mobile devices to work correctly."
190
- msgstr "Ceci fait des blogs avec des thèmes différents pour permettre à des dispositifs mobiles de fonctionner correctement."
191
-
192
- #: options.php:245
193
- msgid "Mobile agent list"
194
- msgstr "Liste d'agents de mobile"
195
-
196
- #: options.php:249
197
- msgid "One per line mobile agents to check for when a page is requested."
198
- msgstr "Un mobile agent par ligne pour vérifier quand la page est demandée."
199
-
200
- #: options.php:250
201
- msgid "The mobile agent string is matched against the agent a device is sending to the server."
202
- msgstr "La série mobile agent correspond quand l'agent est un dispositif envoyé au serveur."
203
-
204
- #: options.php:260
205
- msgid "Compression"
206
- msgstr "Compression"
207
-
208
- #: options.php:264
209
- msgid "Your hosting space has not the \"gzencode\" or \"gzinflate\" function, so no compression options are available."
210
- msgstr "Votre hébergeur ne possède pas la fonction \"gzencode\" ou \"gzinflate\", donc aucune option de compression n'est disponible."
211
-
212
- #: options.php:270
213
- msgid "Enable compression"
214
- msgstr "Activer la compression"
215
-
216
- #: options.php:274
217
- msgid "When possible the page will be sent compressed to save bandwidth."
218
- msgstr "Quand cela est possible, la page sera envoyée compressée pour préserver la bande passante."
219
-
220
- #: options.php:275
221
- msgid ""
222
- "Only the textual part of a page can be compressed, not images, so a photo\r\n"
223
- " blog will consume a lot of bandwidth even with compression enabled."
224
- msgstr ""
225
- "Seulement la partie textuelle d'une page peut être compressée, pas les images, donc une photo\r\n"
226
- " du blog va consommer beaucoup de bande passante lorsque la compression sera active."
227
-
228
- #: options.php:277
229
- #: options.php:291
230
- msgid "Leave the options disabled if you note malfunctions, like blank pages."
231
- msgstr "Laisser cette option désactivée si vous notez des erreurs, comme des pages blanches."
232
-
233
- #: options.php:279
234
- msgid "If you enable this option, the option below will be enabled as well."
235
- msgstr "Si vous activez cette option, l'option ci-dessous sera aussi activée."
236
-
237
- #: options.php:285
238
- msgid "Disk space usage"
239
- msgstr "Usage de l'espace disque"
240
-
241
- #: options.php:289
242
- msgid "Enable this option to minimize disk space usage."
243
- msgstr "Activer cette option pour minimiser l'usage en espace disque."
244
-
245
- #: options.php:290
246
- msgid "The cache will be a little less performant."
247
- msgstr "Le cache sera un peu moins performant."
248
-
249
- #: options.php:302
250
- msgid "Advanced options"
251
- msgstr "Options avancées"
252
-
253
- #: options.php:306
254
- msgid "Translation"
255
- msgstr "Traduction"
256
-
257
- #: options.php:310
258
- msgid "DO NOT show this panel translated."
259
- msgstr "NE PAS montrer ce panel traduit."
260
-
261
- #: options.php:316
262
- msgid "Disable Last-Modified header"
263
- msgstr "Désactiver le haut de page Dernier Modifié"
264
-
265
- #: options.php:320
266
- msgid "Disable some HTTP headers (Last-Modified) which improve performances but some one is reporting they create problems which some hosting configurations."
267
- msgstr "Mettez hors de service quelques en-têtes HTTP (Derniers-modifiés) qui vaaméliorer le fonctionnement, mais quelqu'un a rapporté que cela crée des problèmes de configurations sur certains hébergements."
268
-
269
- #: options.php:326
270
- msgid "Home caching"
271
- msgstr "Accueil en cache"
272
-
273
- #: options.php:330
274
- msgid "DO NOT cache the home page so it is always fresh."
275
- msgstr "NE PAS mettre en cache la page d'accueil si elle est toujours mise à jour."
276
-
277
- #: options.php:336
278
- msgid "Redirect caching"
279
- msgstr "Redirection en cache"
280
-
281
- #: options.php:340
282
- msgid "Cache WordPress redirects."
283
- msgstr "Redirections Cache WordPress."
284
-
285
- #: options.php:341
286
- msgid "WordPress sometime sends back redirects that can be cached to avoid further processing time."
287
- msgstr "WordPress renvoie parfois en arrière ce qui peut être mis en cache pour éviter un nouveau temps de traitement."
288
-
289
- #: options.php:346
290
- msgid "Page not found caching (HTTP 404)"
291
- msgstr "Page mise en cache non trouvée (HTTP 404)"
292
-
293
- #: options.php:369
294
- msgid "URL with parameters"
295
- msgstr "URL avec paramètres"
296
-
297
- #: options.php:373
298
- msgid "Cache requests with query string (parameters)."
299
- msgstr "Requête en cache avec query string (paramétrages)."
300
-
301
- #: options.php:374
302
- msgid "This option has to be enabled for blogs which have post URLs with a question mark on them."
303
- msgstr "Cette option peut être activée pour les blogs qui ont des points d'interrogation dans leurs URLs."
304
-
305
- #: options.php:375
306
- msgid ""
307
- "This option is disabled by default because there is plugins which use\r\n"
308
- " URL parameter to perform specific action that cannot be cached"
309
- msgstr ""
310
- "Cette option est désactivée par défaut car quelques extensions peuvent utiliser\r\n"
311
- " le paramétrage d'URL pour des actions spécifiques qui ne peuvent être mises en cache"
312
-
313
- #: options.php:377
314
- msgid ""
315
- "For who is using search engines friendly permalink format is safe to\r\n"
316
- " leave this option disabled, no performances will be lost."
317
- msgstr ""
318
- "Pour celui qui utilise un moteur de recherche utilisant les permaliens doit\r\n"
319
- " laisser cette option désactivée, aucune performance ne sera perdue."
320
-
321
- #: options.php:392
322
- msgid "URI to reject"
323
- msgstr "URI à rejeter"
324
-
325
- #: options.php:396
326
- msgid "Write one URI per line, each URI has to start with a slash."
327
- msgstr "Ecrire un URI par ligne, chaque URI doit commencer par un slash."
328
-
329
- #: options.php:397
330
- msgid "A specified URI will match the requested URI if the latter starts with the former."
331
- msgstr "Un URI spécifié correspondra à une requête URI si le nouveau démarre avec l'ancien."
332
-
333
- #: options.php:398
334
- msgid "If you want to specify a stric matching, surround the URI with double quotes."
335
- msgstr "Si vous voulez spécifier une correspondance de stric, entourer l'URI de doubles guillemets."
336
-
337
- #: options.php:418
338
- msgid "Agents to reject"
339
- msgstr "Agents à rejeter"
340
-
341
- #: options.php:422
342
- msgid "Write one agent per line."
343
- msgstr "Ecrire un agent par ligne."
344
-
345
- #: options.php:423
346
- msgid "A specified agent will match the client agent if the latter contains the former. The matching is case insensitive."
347
- msgstr "Un agent spécifié correspondra au client agent si le dernier contient l'ancien. La correspondance est insensible à la case."
348
-
349
- #: options.php:429
350
- msgid "Cookies matching"
351
- msgstr "Correspondance des cookies"
352
-
353
- #: options.php:433
354
- msgid "Write one cookie name per line."
355
- msgstr "Ecrire un nom de cookie par ligne."
356
-
357
- #: options.php:434
358
- msgid "When a specified cookie will match one of the cookie names sent bby the client the cache stops."
359
- msgstr "Lorsqu'un cookie spécifié correspondra à l'un des noms de cookies envoyé par le client, le cache se stoppe."
360
-
361
- #: options.php:437
362
- msgid ""
363
- "It seems you have Facebook Connect plugin installed. Add this cookie name to make it works\r\n"
364
- " with Hyper Cache:"
365
- msgstr ""
366
- "Il semblerait que vous avez l'extension Facebook Connect installée. Ajoutez ce nom de cookie pour le faire fonctionner\r\n"
367
- " avec Hyper Cache :"
368
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
hyper-cache-ru_RU.mo DELETED
Binary file
hyper-cache-ru_RU.po DELETED
@@ -1,389 +0,0 @@
1
- # SOME DESCRIPTIVE TITLE.
2
- # This file is put in the public domain.
3
- # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
- #
5
- msgid ""
6
- msgstr ""
7
- "Project-Id-Version: Hyper Cache 2.8.5\n"
8
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/hyper-cache\n"
9
- "POT-Creation-Date: 2009-09-29 15:57+0000\n"
10
- "PO-Revision-Date: 2011-08-20 22:14+0300\n"
11
- "Last-Translator: mckryak <mckryak@freemail.ru>\n"
12
- "Language-Team: \n"
13
- "MIME-Version: 1.0\n"
14
- "Content-Type: text/plain; charset=UTF-8\n"
15
- "Content-Transfer-Encoding: 8bit\n"
16
- "X-Poedit-Language: Russian\n"
17
- "X-Poedit-Country: RUSSIAN FEDERATION\n"
18
-
19
- #: options.php:68
20
- #, php-format
21
- msgid ""
22
- "You can find more details about configurations and working mode\r\n"
23
- " on <a href=\"%s\">Hyper Cache official page</a>."
24
- msgstr "Вы можете подробнее узнать о настройке плагина и его режимах работы на <a href=\"%s\">официальном сайте Hyper Cache</a>."
25
-
26
- #: options.php:74
27
- msgid "Other interesting plugins:"
28
- msgstr "Другие интересные плагины:"
29
-
30
- #: options.php:84
31
- msgid "Cache status"
32
- msgstr "Состояние кэша"
33
-
34
- #: options.php:87
35
- msgid "Files in cache (valid and expired)"
36
- msgstr "Файлы в кэше (актуальные и устаревшие)"
37
-
38
- #: options.php:92
39
- msgid "Clean the cache"
40
- msgstr "Очистить кэш"
41
-
42
- #: options.php:96
43
- msgid "Statistics"
44
- msgstr "Статистика"
45
-
46
- #: options.php:100
47
- msgid "Enable statistics collection"
48
- msgstr "Включить сбор статистики"
49
-
50
- #: options.php:104
51
- msgid ""
52
- "Very experimental and not really efficient,\r\n"
53
- " but can be useful to check how the cache works."
54
- msgstr "Экспериментальная и неэффективная функция, но может быть полена для проверки работы кэша."
55
-
56
- #: options.php:106
57
- msgid ""
58
- "Many .txt files willbe created inside the wp-content folder,\r\n"
59
- " you can safely delete them if you need."
60
- msgstr "В папке wp-content будет создано много файлов .txt. Если потребуется, их можно безопасно удалить."
61
-
62
- #: options.php:125
63
- msgid ""
64
- "Below are statitics about requests Hyper Cache can handle and the ratio between the\r\n"
65
- "requests served by Hyper Cache and the ones served by WordPress."
66
- msgstr "Ниже показана статистика запросов, обработанных Hyper Cache, и отношение запросов, обработанных Hyper Cache и WordPress."
67
-
68
- #: options.php:128
69
- msgid ""
70
- "Requests that bypass the cache due to configurations are not counted because they are\r\n"
71
- "explicitely not cacheable."
72
- msgstr "Запросы, пропускаемые кэшем в соответствии с конфигурацией, не учитываются, поскольку явно отмечены некэшируемыми."
73
-
74
- #: options.php:136
75
- msgid "Detailed data broken up on different types of cache hits"
76
- msgstr "Детальная информация, разнесенная по типам совпадений"
77
-
78
- #: options.php:149
79
- #: options.php:233
80
- #: options.php:259
81
- #: options.php:298
82
- #: options.php:404
83
- msgid "Update"
84
- msgstr "Обновление"
85
-
86
- #: options.php:152
87
- msgid "Configuration"
88
- msgstr "Конфигурация"
89
-
90
- #: options.php:157
91
- msgid "Cached pages timeout"
92
- msgstr "Таймаут кэшированных страниц"
93
-
94
- #: options.php:160
95
- #: options.php:174
96
- msgid "minutes"
97
- msgstr "минут"
98
-
99
- #: options.php:162
100
- msgid ""
101
- "Minutes a cached page is valid and served to users. A zero value means a cached page is\r\n"
102
- " valid forever."
103
- msgstr "Время, в течение которого кэшированная страница считается действительной. Укажите значение 0 (ноль), чтобы страницы считались действительными вечно."
104
-
105
- #: options.php:164
106
- msgid ""
107
- "If a cached page is older than specified value (expired) it is no more used and\r\n"
108
- " will be regenerated on next request of it."
109
- msgstr "Если кэшированная страница старее указанного значения (т.е. устарела), она будет перегенерирована при следующем обращении к ней."
110
-
111
- #: options.php:166
112
- msgid "720 minutes is half a day, 1440 is a full day and so on."
113
- msgstr "Например, 720 минут — половина суток, 1440 — полные сутки."
114
-
115
- #: options.php:171
116
- msgid "Cache autoclean"
117
- msgstr "Автоочистка кэша"
118
-
119
- #: options.php:176
120
- msgid ""
121
- "Frequency of the autoclean process which removes to expired cached pages to free\r\n"
122
- " disk space."
123
- msgstr "Частота автоматической очистки кэша — удаления устаревших страниц для освобождения дискового пространства."
124
-
125
- #: options.php:178
126
- msgid ""
127
- "Set lower or equals of timeout above. If set to zero the autoclean process never\r\n"
128
- " runs."
129
- msgstr "Установите значение меньшее или равное таймауту. Если указать 0 (ноль), автоматическая очистка будет отключена."
130
-
131
- #: options.php:180
132
- msgid ""
133
- "There is no performance improvements setting to zero, worse the cache folder will fill up\r\n"
134
- " being slower."
135
- msgstr "Установка нулевого значения не улучшает производительность, но кэш будет занимать больше места."
136
-
137
- #: options.php:182
138
- msgid "If timeout is set to zero, autoclean never runs, so this value has no meaning"
139
- msgstr "Если таймаут установлен в ноль, автоматическая очистка не будет выполняться, так что это значение ни на что не влияет."
140
-
141
- #: options.php:187
142
- msgid "Cache invalidation mode"
143
- msgstr "Режим аннулирования кэша"
144
-
145
- #: options.php:190
146
- msgid "All cached pages"
147
- msgstr "Все кэшированные страницы"
148
-
149
- #: options.php:191
150
- msgid "Only modified posts"
151
- msgstr "Только измененные записи"
152
-
153
- #: options.php:192
154
- msgid "Only modified pages"
155
- msgstr "Только измененные страницы"
156
-
157
- #: options.php:193
158
- msgid "Nothing"
159
- msgstr "Ничего"
160
-
161
- #: options.php:197
162
- msgid "Invalidate home, archives, categories on single post invalidation"
163
- msgstr "При аннулировании записи также аннулировать домашнюю страницу, страницы архивов и категорий"
164
-
165
- #: options.php:200
166
- msgid "\"Invalidation\" is the process of deleting cached pages when they are no more valid."
167
- msgstr "«Аннулирование» — процесс удаления страниц из кэша, когда они устаревают."
168
-
169
- #: options.php:201
170
- msgid ""
171
- "Invalidation process is started when blog contents are modified (new post, post update, new comment,...) so\r\n"
172
- " one or more cached pages need to be refreshed to get that new content."
173
- msgstr "Процесс аннулирования запускается при изменении содержимого блога (новая запись, изменение записи, размещение комментария...), после чего одна или несколько страниц в кэше должны быть заменены новыми."
174
-
175
- #: options.php:203
176
- msgid ""
177
- "A new comment submission or a comment moderation is considered like a post modification\r\n"
178
- " where the post is the one the comment is relative to."
179
- msgstr "Размещение или модерация комментария учитывается аналогично изменению записи, к которой этот комментарий относится."
180
-
181
- #: options.php:209
182
- msgid "Disable cache for commenters"
183
- msgstr "Отключить кэш для комментаторов"
184
-
185
- #: options.php:213
186
- msgid ""
187
- "When users leave comments, WordPress show pages with their comments even if in moderation\r\n"
188
- " (and not visible to others) and pre-fills the comment form."
189
- msgstr "Когда пользователь оставляет комментарий, WordPress показывает ему страницу с этим комментарием, даже если он отправлен на премодерацию и не виден другим пользователям."
190
-
191
- #: options.php:215
192
- msgid "If you want to keep those features, enable this option."
193
- msgstr "Поставьте метку, если хотите сохранить эту функцию."
194
-
195
- #: options.php:216
196
- msgid "The caching system will be less efficient but the blog more usable."
197
- msgstr "Кэширование будет менее эффективным, но блог — более удобным."
198
-
199
- #: options.php:222
200
- msgid "Feeds caching"
201
- msgstr "Кэширование RSS"
202
-
203
- #: options.php:226
204
- msgid "When enabled the blog feeds will be cache as well."
205
- msgstr "Если включить, RSS-потоки блога также будут кэшироваться. "
206
-
207
- #: options.php:227
208
- msgid ""
209
- "Usually this options has to be left unchecked but if your blog is rather static,\r\n"
210
- " you can enable it and have a bit more efficiency"
211
- msgstr "Обычно включать не требуется, но, если блог почти не меняется, эта функция сделает его чуть более эффективным."
212
-
213
- #: options.php:236
214
- msgid "Configuration for mobile devices"
215
- msgstr "Конфигурация для мобильных устройств"
216
-
217
- #: options.php:239
218
- msgid "Detect mobile devices"
219
- msgstr "Определять мобильные устройства"
220
-
221
- #: options.php:243
222
- msgid "When enabled mobile devices will be detected and the cached page stored under different name."
223
- msgstr "Если включить, мобильные устройства будут определяться, и страницы для них — кэшироваться под другими именами."
224
-
225
- #: options.php:244
226
- msgid "This makes blogs with different themes for mobile devices to work correctly."
227
- msgstr "Это позволит корректно работать блогу с особыми темами для мобильных устройств."
228
-
229
- #: options.php:249
230
- msgid "Mobile agent list"
231
- msgstr "Список мобильных агентов"
232
-
233
- #: options.php:253
234
- msgid "One per line mobile agents to check for when a page is requested."
235
- msgstr "Список мобильных агентов по одному на строке."
236
-
237
- #: options.php:254
238
- msgid "The mobile agent string is matched against the agent a device is sending to the server."
239
- msgstr "Строки проверяются на совпадение со значением «agent», переданным устройством серверу."
240
-
241
- #: options.php:263
242
- msgid "Compression"
243
- msgstr "Сжатие"
244
-
245
- #: options.php:267
246
- msgid "Your hosting space has not the \"gzencode\" or \"gzinflate\" function, so no compression options are available."
247
- msgstr "На вашем хостинге нет функций «gzencode» или «gzinflate», поэтому сжатие недоступно."
248
-
249
- #: options.php:273
250
- msgid "Enable compression"
251
- msgstr "Включить сжатие"
252
-
253
- #: options.php:277
254
- msgid "When possible the page will be sent compressed to save bandwidth."
255
- msgstr "По возможности страницы будут отправляться сжатыми для экономии трафика."
256
-
257
- #: options.php:278
258
- msgid ""
259
- "Only the textual part of a page can be compressed, not images, so a photo\r\n"
260
- " blog will consume a lot of bandwidth even with compression enabled."
261
- msgstr "Сжата может быть только текстовая часть страницы, поэтому фотоблог требует передачи значительного объема данных даже при включенном сжатии."
262
-
263
- #: options.php:280
264
- #: options.php:293
265
- msgid "Leave the options disabled if you note malfunctions, like blank pages."
266
- msgstr "Оставьте отключенной, если замечаете неправильную работу, например, пустые страницы."
267
-
268
- #: options.php:282
269
- msgid "If you enable this option, the option below will be enabled as well."
270
- msgstr "Если включена, будет включена и следующая опция."
271
-
272
- #: options.php:287
273
- msgid "Disk space usage"
274
- msgstr "Использование дискового пространства"
275
-
276
- #: options.php:291
277
- msgid "Enable this option to minimize disk space usage."
278
- msgstr "Включите для экономии дискового пространства."
279
-
280
- #: options.php:292
281
- msgid "The cache will be a little less performant."
282
- msgstr "Кэширование будет несколько менее производительным."
283
-
284
- #: options.php:303
285
- msgid "Advanced options"
286
- msgstr "Экспертные настройки"
287
-
288
- #: options.php:307
289
- msgid "Translation"
290
- msgstr "Перевод"
291
-
292
- #: options.php:311
293
- msgid "DO NOT show this panel translated."
294
- msgstr "НЕ ПЕРЕВОДИТЬ эту страницу."
295
-
296
- #: options.php:316
297
- msgid "Home caching"
298
- msgstr "Кэширование Домашней"
299
-
300
- #: options.php:320
301
- msgid "DO NOT cache the home page so it is always fresh."
302
- msgstr "НЕ КЭШИРОВАТЬ домашнюю страницу."
303
-
304
- #: options.php:325
305
- msgid "Redirect caching"
306
- msgstr "Кэширование перенаправлений"
307
-
308
- #: options.php:329
309
- msgid "Cache WordPress redirects."
310
- msgstr "Кэшировать перенаправления WordPress."
311
-
312
- #: options.php:330
313
- msgid "WordPress sometime sends back redirects that can be cached to avoid further processing time."
314
- msgstr "WordPress иногда передает перенаправление (redirect). Их можно кэшировать, чтобы избегать затрат времени на обработку."
315
-
316
- #: options.php:335
317
- msgid "URL with parameters"
318
- msgstr "URL с параметрами"
319
-
320
- #: options.php:339
321
- msgid "Cache requests with query string (parameters)."
322
- msgstr "Кэшировать запросы с параметрами."
323
-
324
- #: options.php:340
325
- msgid "This option has to be enabled for blogs which have post URLs with a question mark on them."
326
- msgstr "Включается для блогов, где записи имеют адреса (URL) со знаком вопроса в них."
327
-
328
- #: options.php:341
329
- msgid ""
330
- "This option is disabled by default because there is plugins which use\r\n"
331
- " URL parameter to perform specific action that cannot be cached"
332
- msgstr "По умолчанию отключено, т.к. существуют плагины, использующие параметры URL для выполнения специфических действий. Их кэшировать нельзя."
333
-
334
- #: options.php:343
335
- msgid ""
336
- "For who is using search engines friendly permalink format is safe to\r\n"
337
- " leave this option disabled, no performances will be lost."
338
- msgstr "При использовании «читаемого» формата постоянных ссылок эту опцию можно безопасно отключить. Потерь производительности не будет."
339
-
340
- #: options.php:349
341
- msgid "URI to reject"
342
- msgstr "Исключаемые URI"
343
-
344
- #: options.php:353
345
- msgid "Write one URI per line, each URI has to start with a slash."
346
- msgstr "Записывается по одному URI на строку, каждый URI — начиная со слеша (/)."
347
-
348
- #: options.php:354
349
- msgid "A specified URI will match the requested URI if the latter starts with the former."
350
- msgstr "Указанные URI будут сравниваться с запрашиваемыми URI (по условию «начинается с»)."
351
-
352
- #: options.php:355
353
- msgid "If you want to specify a stric matching, surround the URI with double quotes."
354
- msgstr "Если требуется строгое соответствие, заключите URI в двойные кавычки (\"...\")."
355
-
356
- #: options.php:374
357
- msgid "Agents to reject"
358
- msgstr "Исключаемые агенты"
359
-
360
- #: options.php:378
361
- msgid "Write one agent per line."
362
- msgstr "Записываются по одному имени на строке."
363
-
364
- #: options.php:379
365
- msgid "A specified agent will match the client agent if the latter contains the former. The matching is case insensitive."
366
- msgstr "Проверяется вхождение указанных строк в значение Agent (без учета регистра). "
367
-
368
- #: options.php:384
369
- msgid "Cookies matching"
370
- msgstr "Совпадение Cookies"
371
-
372
- #: options.php:388
373
- msgid "Write one cookie name per line."
374
- msgstr "По одной записи на строке."
375
-
376
- #: options.php:389
377
- msgid "When a specified cookie will match one of the cookie names sent bby the client the cache stops."
378
- msgstr "Если указанная строка совпадает с одним из имен Cookies, переданных клиентом, кэш останавливается."
379
-
380
- #: options.php:392
381
- msgid ""
382
- "It seems you have Facebook Connect plugin installed. Add this cookie name to make it works\r\n"
383
- " with Hyper Cache:"
384
- msgstr "Похоже, у вас установлен плагин Facebook Connect. Добавьте следующее имя, чтобы он работал с Hyper Cache:"
385
-
386
- #: plugin.php:120
387
- msgid "Settings"
388
- msgstr "Настройки"
389
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
hyper-cache-zh_CN.mo DELETED
Binary file
hyper-cache-zh_CN.po DELETED
@@ -1,360 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Hyper Cache v2.8.8\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2012-03-25 12:00+0800\n"
6
- "PO-Revision-Date: 2012-03-28 18:08+0800\n"
7
- "Last-Translator: Tommy Tung\n"
8
- "Language-Team: Ragnarok | ragnarok.3dsydesign.com <ragnarok@3dsydesign.com>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2\n"
13
- "X-Poedit-Language: Chinese\n"
14
- "X-Poedit-Country: CHINA\n"
15
- "X-Poedit-SourceCharset: utf-8\n"
16
-
17
- #: options.php:92
18
- msgid "You must add to the file wp-config.php (at its beginning after the &lt;?php) the line of code: <code>define('WP_CACHE', true);</code>."
19
- msgstr "你必须在「wp-config.php」文件里面新增这行代码:<code>define('WP_CACHE', true);</code>(要写在 &lt;?php 之后)。"
20
-
21
- #: options.php:103
22
- msgid "<p><strong>Options saved BUT not active because Hyper Cache was not able to update the file wp-content/advanced-cache.php (is it writable?).</strong></p>"
23
- msgstr "<p><strong>选项已储存但是无法有效激活,因为 Hyper Cache 无法更新「wp-content/advanced-cache.php」这文件(文件是否能够写入?)。</strong></p>"
24
-
25
- #: options.php:109
26
- msgid "<p><strong>Hyper Cache was not able to create the folder \"wp-content/cache/hyper-cache\". Make it manually setting permissions to 777.</strong></p>"
27
- msgstr "<p><strong>Hyper Cache 无法建立「wp-content/cache/hyper-cache」文件夹,请手动设定文件夹权限为 777。</strong></p>"
28
-
29
- #: options.php:114
30
- msgid "You can find more details about configurations and working mode on <a href=\"%s\">Hyper Cache official page</a>."
31
- msgstr "你可以在 <a href=\"%s\">Hyper Cache 官方网页</a> 找到更多关于配置以及工作模式的细节。简体中文语系由 <a href=\"http://ragnarok.3dsydesign.com/\" target=\"_blank\">Ragnarok</a> 翻译而成,你也可以参考 Ragnarok 的 <a href=\"http://ragnarok.3dsydesign.com/38/hyper-cache/\" target=\"_blank\">Hyper Cache 教学</a> 。"
32
-
33
- #: options.php:123
34
- msgid "Clear cache"
35
- msgstr "清除缓存"
36
-
37
- #: options.php:126
38
- msgid "Cache status"
39
- msgstr "缓存状态"
40
-
41
- #: options.php:129
42
- msgid "Files in cache (valid and expired)"
43
- msgstr "缓存的文件数(有效期限内)"
44
-
45
- #: options.php:133
46
- msgid "Cleaning process"
47
- msgstr "清除进程"
48
-
49
- #: options.php:135
50
- msgid "Next run on: "
51
- msgstr "下次执行时间于:"
52
-
53
- #: options.php:142
54
- msgid "The cleaning process runs hourly and it's ok to run it hourly: that grant you an efficient cache. If above there is not a valid next run time, wait 10 seconds and reenter this panel. If nothing change, try to deactivate and reactivate Hyper Cache."
55
- msgstr "清除进程会频繁的进行,而且让清除动作时时进行是很不错的,可以带给你更高效率的缓存。如果上面没有显示有效的下次执行时间,请等待 10 秒钟再重新进入这个面板。如果还是没有任何变化,请试着禁用并重新激活 Hyper Cache。"
56
-
57
- #: options.php:149
58
- msgid "Configuration"
59
- msgstr "配置"
60
-
61
- #: options.php:154
62
- msgid "Cached pages timeout"
63
- msgstr "缓存页面到期时间"
64
-
65
- #: options.php:157
66
- msgid "minutes"
67
- msgstr "分钟"
68
-
69
- #: options.php:159
70
- msgid "Minutes a cached page is valid and served to users. A zero value means a cached page is valid forever."
71
- msgstr "在设定时间内的缓存页面都是有效的,并且提供给用户端使用,数值设为 0 表示缓存的页面永远都不会到期。"
72
-
73
- #: options.php:161
74
- msgid "If a cached page is older than specified value (expired) it is no more used and will be regenerated on next request of it."
75
- msgstr "如果缓存的页面已经比指定的数值更久(已过期)就不会再继续使用,并且会再重新产生下一个请求的缓存页面。"
76
-
77
- #: options.php:163
78
- msgid "720 minutes is half a day, 1440 is a full day and so on."
79
- msgstr "720 分钟是半天,1440 分钟是一整天,其它以此类推。"
80
-
81
- #: options.php:169
82
- msgid "Cache invalidation mode"
83
- msgstr "缓存「失效」模式"
84
-
85
- #: options.php:172
86
- msgid "All cached pages"
87
- msgstr "所有已缓存页面"
88
-
89
- #: options.php:173
90
- msgid "Only modified posts"
91
- msgstr "只有修改后的文章"
92
-
93
- #: options.php:174
94
- msgid "Only modified pages"
95
- msgstr "只有修改后的页面"
96
-
97
- #: options.php:175
98
- msgid "Nothing"
99
- msgstr "无"
100
-
101
- #: options.php:179
102
- msgid "Invalidate home, archives, categories on single post invalidation"
103
- msgstr "只要有单一文章「失效」,就将首页、汇整、分类也一起「失效」。"
104
-
105
- #: options.php:182
106
- msgid "\"Invalidation\" is the process of deleting cached pages when they are no more valid."
107
- msgstr "「失效」指的是当缓存的页面不再有效时删除它们的程序。"
108
-
109
- #: options.php:183
110
- msgid "Invalidation process is started when blog contents are modified (new post, post update, new comment,...) so one or more cached pages need to be refreshed to get that new content."
111
- msgstr "当博客内容被修改时(新增文章、文章更新、新增评论 ... )「失效」的程序就会启动,因此一个或多个缓存页面需要更新以获得新的内容。"
112
-
113
- #: options.php:185
114
- msgid "A new comment submission or a comment moderation is considered like a post modification where the post is the one the comment is relative to."
115
- msgstr "新的评论提交或评论审核通过时,也跟文章经过修改是一样的(内文是文章的一部分,而评论则与内文互相对应)。"
116
-
117
- #: options.php:192
118
- msgid "Disable cache for commenters"
119
- msgstr "禁用评论的缓存"
120
-
121
- #: options.php:196
122
- msgid "When users leave comments, WordPress show pages with their comments even if in moderation (and not visible to others) and pre-fills the comment form."
123
- msgstr "当用户发表评论时,即使评论还在审核中(而且其他人不可见),WordPress 也会先预填评论表格,将他们的留言显示到页面上。"
124
-
125
- #: options.php:198
126
- msgid "If you want to keep those features, enable this option."
127
- msgstr "如果你想要保留这些功能,请激活这个选项。"
128
-
129
- #: options.php:199
130
- msgid "The caching system will be less efficient but the blog more usable."
131
- msgstr "这样做会降低缓存系统的效率,但博客会更便于使用。"
132
-
133
- #: options.php:206
134
- msgid "Feeds caching"
135
- msgstr "RSS 缓存"
136
-
137
- #: options.php:210
138
- msgid "When enabled the blog feeds will be cache as well."
139
- msgstr "当激活后博客的 RSS 也会被缓存。"
140
-
141
- #: options.php:211
142
- msgid "Usually this options has to be left unchecked but if your blog is rather static, you can enable it and have a bit more efficiency"
143
- msgstr "通常这个选项必定是不勾选,不过如果你的博客是比较静态的,你可以激活它来获得一些效率提升。"
144
-
145
- #: options.php:218
146
- #: options.php:256
147
- #: options.php:297
148
- #: options.php:449
149
- msgid "Update"
150
- msgstr "更新"
151
-
152
- #: options.php:221
153
- msgid "Configuration for mobile devices"
154
- msgstr "手机配置"
155
-
156
- #: options.php:224
157
- msgid "WordPress Mobile Pack"
158
- msgstr "WordPress Mobile Pack"
159
-
160
- #: options.php:228
161
- msgid "Enbale integration with <a href=\"http://wordpress.org/extend/plugins/wordpress-mobile-pack/\">WordPress Mobile Pack</a> plugin. If you have that plugin, Hyper Cache use it to detect mobile devices and caches saparately the different pages generated."
162
- msgstr "激活后会整合 <a href=\"http://wordpress.org/extend/plugins/wordpress-mobile-pack/\">WordPress Mobile Pack</a> 插件。如果你有使用这插件,Hyper Cache 会利用它来检测手机,并且在不同页面产生时个别缓存。"
163
-
164
- #: options.php:234
165
- msgid "Detect mobile devices"
166
- msgstr "侦测手机"
167
-
168
- #: options.php:238
169
- msgid "When enabled mobile devices will be detected and the cached page stored under different name."
170
- msgstr "当激活时,手机将会侦测并且将缓存页面存到不同的名称底下。"
171
-
172
- #: options.php:239
173
- msgid "This makes blogs with different themes for mobile devices to work correctly."
174
- msgstr "这让那些使用手机访问时会采用不同布景主题的博客也能够正常工作。"
175
-
176
- #: options.php:245
177
- msgid "Mobile agent list"
178
- msgstr "行动代理商清单"
179
-
180
- #: options.php:249
181
- msgid "One per line mobile agents to check for when a page is requested."
182
- msgstr "当请求页面时,会逐行检查每一个行动代理商。"
183
-
184
- #: options.php:250
185
- msgid "The mobile agent string is matched against the agent a device is sending to the server."
186
- msgstr "行动代理商的字串符合时,会将相对的代理商装置传送到服务器。"
187
-
188
- #: options.php:260
189
- msgid "Compression"
190
- msgstr "压缩"
191
-
192
- #: options.php:264
193
- msgid "Your hosting space has not the \"gzencode\" or \"gzinflate\" function, so no compression options are available."
194
- msgstr "你的 Host 主机没有「gzencode」或「gzinflate」功能,所以没有可以使用的压缩选项。"
195
-
196
- #: options.php:270
197
- msgid "Enable compression"
198
- msgstr "激活压缩"
199
-
200
- #: options.php:274
201
- msgid "When possible the page will be sent compressed to save bandwidth."
202
- msgstr "当选项可用时,会进行页面压缩以节省带宽。"
203
-
204
- #: options.php:275
205
- msgid "Only the textual part of a page can be compressed, not images, so a photo blog will consume a lot of bandwidth even with compression enabled."
206
- msgstr "只有页面的文字部分可以被压缩而不是图片,因此以照片为主的博客即使激活压缩,也还是会消耗大量带宽。"
207
-
208
- #: options.php:277
209
- #: options.php:291
210
- msgid "Leave the options disabled if you note malfunctions, like blank pages."
211
- msgstr "如果你很在意会发生故障(如空白页)的话,请保留此选项禁用。"
212
-
213
- #: options.php:279
214
- msgid "If you enable this option, the option below will be enabled as well."
215
- msgstr "如果你激活这选项,底下的选项也同样会激活。"
216
-
217
- #: options.php:285
218
- msgid "Disk space usage"
219
- msgstr "硬盘空间使用情况"
220
-
221
- #: options.php:289
222
- msgid "Enable this option to minimize disk space usage."
223
- msgstr "激活此选项来最大限度地减少硬盘空间使用情况,"
224
-
225
- #: options.php:290
226
- msgid "The cache will be a little less performant."
227
- msgstr "会稍微减少一些缓存的性能。"
228
-
229
- #: options.php:302
230
- msgid "Advanced options"
231
- msgstr "进阶选项"
232
-
233
- #: options.php:306
234
- msgid "Translation"
235
- msgstr "翻译"
236
-
237
- #: options.php:310
238
- msgid "DO NOT show this panel translated."
239
- msgstr "不显示 Hyper Cache 选项面板的翻译。"
240
-
241
- #: options.php:316
242
- msgid "Disable Last-Modified header"
243
- msgstr "禁用「页首 Last-Modified」"
244
-
245
- #: options.php:320
246
- msgid "Disable some HTTP headers (Last-Modified) which improve performances but some one is reporting they create problems which some hosting configurations."
247
- msgstr "禁用一些 HTTP 页首属性(Last-Modified)可以增进效能,不过有些人反映说一些 Host 主机商的配置会产生问题。"
248
-
249
- #: options.php:326
250
- msgid "Home caching"
251
- msgstr "「首页」缓存"
252
-
253
- #: options.php:330
254
- msgid "DO NOT cache the home page so it is always fresh."
255
- msgstr "不缓存首页,因此首页总是保持最新状态。"
256
-
257
- #: options.php:336
258
- msgid "Redirect caching"
259
- msgstr "「重定向」缓存"
260
-
261
- #: options.php:340
262
- msgid "Cache WordPress redirects."
263
- msgstr "缓存 WordPress 的重定向。"
264
-
265
- #: options.php:341
266
- msgid "WordPress sometime sends back redirects that can be cached to avoid further processing time."
267
- msgstr "WordPress 有时会回传重定向,可以把这里缓存以避免增加处理的时间。"
268
-
269
- #: options.php:346
270
- msgid "Page not found caching (HTTP 404)"
271
- msgstr "「找不到网页」缓存 (404 错误)"
272
-
273
- #: options.php:353
274
- msgid "Strip query string"
275
- msgstr "从查询字串中删除不必要内容"
276
-
277
- #: options.php:357
278
- msgid "This is a really special case, usually you have to kept it disabled. When enabled, URL with query string will be reduced removing the query string. So the URL http://www.domain.com/post-title and http://www.domain.com/post-title?a=b&amp;c=d are cached as a single page.<br />Setting this option disable the next one."
279
- msgstr "这是一个非常特殊的情况,通常你必须保持选项禁用。当激活后,带有查询字串的网址将会缩减和移除查询字串。因此网址例如「http://www.domain.com/post-title」和「http://www.domain.com/post-title?a=b&amp;c=d」都会缓存到同一个页面。<br />设定(激活)这个选项时要禁用下一个选项。"
280
-
281
- #: options.php:362
282
- msgid "<strong>Many plugins can stop to work correctly with this option enabled (eg. my <a href=\"http://www.satollo.net/plugins/newsletter\">Newsletter plugin</a>)</strong>"
283
- msgstr "<strong>激活这个选项可能会阻挡许多插件的正确运作(例如:我的 <a href=\"http://www.satollo.net/plugins/newsletter\">Newsletter 插件</a>)。</strong>"
284
-
285
- #: options.php:369
286
- msgid "URL with parameters"
287
- msgstr "带参数的网址"
288
-
289
- #: options.php:373
290
- msgid "Cache requests with query string (parameters)."
291
- msgstr "带有查询字串(参数)的缓存请求。"
292
-
293
- #: options.php:374
294
- msgid "This option has to be enabled for blogs which have post URLs with a question mark on them."
295
- msgstr "对于那些文章网址上面带有问号的博客,激活这个选项是必要的。"
296
-
297
- #: options.php:375
298
- msgid "This option is disabled by default because there is plugins which use URL parameter to perform specific action that cannot be cached"
299
- msgstr "这个选项预设为禁用,因为有一些插件使用网址参数来执行无法被缓存的特殊操作。"
300
-
301
- #: options.php:377
302
- msgid "For who is using search engines friendly permalink format is safe to leave this option disabled, no performances will be lost."
303
- msgstr "对于那些使用对搜寻引擎友好的固定网址格式的人来说,禁用这个选项是无害的,不会有效能上的任何损失。"
304
-
305
- #: options.php:385
306
- msgid "Filters"
307
- msgstr "过滤"
308
-
309
- #: options.php:387
310
- msgid "Here you can: exclude pages and posts from the cache, specifying their address (URI); disable Hyper Cache for specific User Agents (browsers, bot, mobile devices, ...); disable the cache for users that have specific cookies."
311
- msgstr "这里你可以:经由指定位址(URI),从缓存中排除这些页面和文章;对特定的「用户代理」禁用 Hyper Cache(浏览器、机器人、手机 ... );对那些有特定 Cookie 的用户禁用缓存。"
312
-
313
- #: options.php:392
314
- msgid "URI to reject"
315
- msgstr "拒绝的位址"
316
-
317
- #: options.php:396
318
- msgid "Write one URI per line, each URI has to start with a slash."
319
- msgstr "每行写一个位址,每个位址必须以斜线开头(例如 /video/my-new-performance)。"
320
-
321
- #: options.php:397
322
- msgid "A specified URI will match the requested URI if the latter starts with the former."
323
- msgstr "如果请求的位址是以上面这些指定的「拒绝的位址」开头,就从缓存中排除这些位址。"
324
-
325
- #: options.php:398
326
- msgid "If you want to specify a stric matching, surround the URI with double quotes."
327
- msgstr "如果你想指定一个比较严谨的符合,请在位址前后加上双引号。"
328
-
329
- #: options.php:418
330
- msgid "Agents to reject"
331
- msgstr "拒绝的代理"
332
-
333
- #: options.php:422
334
- msgid "Write one agent per line."
335
- msgstr "每行写一个代理。"
336
-
337
- #: options.php:423
338
- msgid "A specified agent will match the client agent if the latter contains the former. The matching is case insensitive."
339
- msgstr "如果代理用户端(User-Agent)包含在上面这些指定的「拒绝的代理」里面,就禁用缓存 。(名称不分大小写)"
340
-
341
- #: options.php:429
342
- msgid "Cookies matching"
343
- msgstr "符合的 Cookies"
344
-
345
- #: options.php:433
346
- msgid "Write one cookie name per line."
347
- msgstr "每行写一个 Cookie 的名称。"
348
-
349
- #: options.php:434
350
- msgid "When a specified cookie will match one of the cookie names sent bby the client the cache stops."
351
- msgstr "当用户的 Cookie 符合上面这些指定的 Cookie 名称其中之一时,就会停止对用户端的缓存。"
352
-
353
- #: options.php:437
354
- msgid "It seems you have Facebook Connect plugin installed. Add this cookie name to make it works with Hyper Cache:"
355
- msgstr "你似乎有安装 Facebook Connect 插件,新增这个 Cookie 名称让 Hyper Cache 能够正常运作:"
356
-
357
- #. Description of the plugin/theme
358
- msgid "Hyper Cache is a cache system for WordPress to improve it's perfomances and save resources. <a href=\"http://www.satollo.net/plugins/hyper-cache\" target=\"_blank\">Hyper Cache official page</a>. To manually upgrade remember the sequence: deactivate, update, reactivate."
359
- msgstr "Hyper Cache 是用来提升 WordPress 效能以及节省系统资源的缓存系统。<a href=\"http://www.satollo.net/plugins/hyper-cache\" target=\"_blank\">Hyper Cache 官方网页</a>,手动升级请记得这些顺序:禁用、更新、激活。|简体中文语系:<a href=\"http://ragnarok.3dsydesign.com/\" target=\"_blank\">Ragnarok</a>|教学:<a href=\"http://ragnarok.3dsydesign.com/38/hyper-cache/\" target=\"_blank\">Hyper Cache 教学</a>"
360
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
hyper-cache-zh_TW.mo DELETED
Binary file
hyper-cache-zh_TW.po DELETED
@@ -1,360 +0,0 @@
1
- msgid ""
2
- msgstr ""
3
- "Project-Id-Version: Hyper Cache v2.8.8\n"
4
- "Report-Msgid-Bugs-To: \n"
5
- "POT-Creation-Date: 2012-03-25 12:00+0800\n"
6
- "PO-Revision-Date: 2012-03-28 18:08+0800\n"
7
- "Last-Translator: Tommy Tung\n"
8
- "Language-Team: Ragnarok | ragnarok.3dsydesign.com <ragnarok@3dsydesign.com>\n"
9
- "MIME-Version: 1.0\n"
10
- "Content-Type: text/plain; charset=UTF-8\n"
11
- "Content-Transfer-Encoding: 8bit\n"
12
- "X-Poedit-KeywordsList: __;_e;__ngettext:1,2\n"
13
- "X-Poedit-Language: Chinese\n"
14
- "X-Poedit-Country: TAIWAN\n"
15
- "X-Poedit-SourceCharset: utf-8\n"
16
-
17
- #: options.php:92
18
- msgid "You must add to the file wp-config.php (at its beginning after the &lt;?php) the line of code: <code>define('WP_CACHE', true);</code>."
19
- msgstr "你必須在「wp-config.php」檔案裡面新增這行程式碼:<code>define('WP_CACHE', true);</code>(要寫在 &lt;?php 之後)。"
20
-
21
- #: options.php:103
22
- msgid "<p><strong>Options saved BUT not active because Hyper Cache was not able to update the file wp-content/advanced-cache.php (is it writable?).</strong></p>"
23
- msgstr "<p><strong>選項已儲存但是無法有效啟用,因為 Hyper Cache 無法更新「wp-content/advanced-cache.php」這檔案(檔案是否能夠寫入?)。</strong></p>"
24
-
25
- #: options.php:109
26
- msgid "<p><strong>Hyper Cache was not able to create the folder \"wp-content/cache/hyper-cache\". Make it manually setting permissions to 777.</strong></p>"
27
- msgstr "<p><strong>Hyper Cache 無法建立「wp-content/cache/hyper-cache」資料夾,請手動設定資料夾權限為 777。</strong></p>"
28
-
29
- #: options.php:114
30
- msgid "You can find more details about configurations and working mode on <a href=\"%s\">Hyper Cache official page</a>."
31
- msgstr "你可以在 <a href=\"%s\">Hyper Cache 官方網頁</a> 找到更多關於配置以及工作模式的細節。繁體中文語系由 <a href=\"http://ragnarok.3dsydesign.com/\" target=\"_blank\">Ragnarok</a> 翻譯而成,你也可以參考 Ragnarok 的 <a href=\"http://ragnarok.3dsydesign.com/38/hyper-cache/\" target=\"_blank\">Hyper Cache 教學</a> 。"
32
-
33
- #: options.php:123
34
- msgid "Clear cache"
35
- msgstr "清除快取"
36
-
37
- #: options.php:126
38
- msgid "Cache status"
39
- msgstr "快取狀態"
40
-
41
- #: options.php:129
42
- msgid "Files in cache (valid and expired)"
43
- msgstr "快取的檔案數(有效期限內)"
44
-
45
- #: options.php:133
46
- msgid "Cleaning process"
47
- msgstr "清除過程"
48
-
49
- #: options.php:135
50
- msgid "Next run on: "
51
- msgstr "下次執行時間於:"
52
-
53
- #: options.php:142
54
- msgid "The cleaning process runs hourly and it's ok to run it hourly: that grant you an efficient cache. If above there is not a valid next run time, wait 10 seconds and reenter this panel. If nothing change, try to deactivate and reactivate Hyper Cache."
55
- msgstr "清除過程會頻繁的進行,而且讓清除動作時時進行是很不錯的,可以帶給你更高效率的快取。如果上面沒有顯示有效的下次執行時間,請等待 10 秒鐘再重新進入這個面板。如果還是沒有任何變化,請試著停用並重新啟用 Hyper Cache。"
56
-
57
- #: options.php:149
58
- msgid "Configuration"
59
- msgstr "配置"
60
-
61
- #: options.php:154
62
- msgid "Cached pages timeout"
63
- msgstr "快取頁面到期時間"
64
-
65
- #: options.php:157
66
- msgid "minutes"
67
- msgstr "分鐘"
68
-
69
- #: options.php:159
70
- msgid "Minutes a cached page is valid and served to users. A zero value means a cached page is valid forever."
71
- msgstr "在設定時間內的快取頁面都是有效的,並且提供給客戶端使用,數值設為 0 表示快取的頁面永遠都不會到期。"
72
-
73
- #: options.php:161
74
- msgid "If a cached page is older than specified value (expired) it is no more used and will be regenerated on next request of it."
75
- msgstr "如果快取的頁面已經比指定的數值更久(已過期)就不會再繼續使用,並且會再重新產生下一個請求的快取頁面。"
76
-
77
- #: options.php:163
78
- msgid "720 minutes is half a day, 1440 is a full day and so on."
79
- msgstr "720 分鐘是半天,1440 分鐘是一整天,其它以此類推。"
80
-
81
- #: options.php:169
82
- msgid "Cache invalidation mode"
83
- msgstr "快取「失效」模式"
84
-
85
- #: options.php:172
86
- msgid "All cached pages"
87
- msgstr "所有已快取頁面"
88
-
89
- #: options.php:173
90
- msgid "Only modified posts"
91
- msgstr "只有修改後的文章"
92
-
93
- #: options.php:174
94
- msgid "Only modified pages"
95
- msgstr "只有修改後的頁面"
96
-
97
- #: options.php:175
98
- msgid "Nothing"
99
- msgstr "無"
100
-
101
- #: options.php:179
102
- msgid "Invalidate home, archives, categories on single post invalidation"
103
- msgstr "只要有單一文章「失效」,就將首頁、彙整、分類也一起「失效」。"
104
-
105
- #: options.php:182
106
- msgid "\"Invalidation\" is the process of deleting cached pages when they are no more valid."
107
- msgstr "「失效」指的是當快取的頁面不再有效時刪除它們的程序。"
108
-
109
- #: options.php:183
110
- msgid "Invalidation process is started when blog contents are modified (new post, post update, new comment,...) so one or more cached pages need to be refreshed to get that new content."
111
- msgstr "當部落格內容被修改時(新增文章、文章更新、新增迴響 ... )「失效」的程序就會啟動,因此一個或多個快取頁面需要重新整理以獲得新的內容。"
112
-
113
- #: options.php:185
114
- msgid "A new comment submission or a comment moderation is considered like a post modification where the post is the one the comment is relative to."
115
- msgstr "新的迴響提交或迴響審核通過時,也跟文章經過修改是一樣的(內文是文章的一部分,而迴響則與內文互相對應)。"
116
-
117
- #: options.php:192
118
- msgid "Disable cache for commenters"
119
- msgstr "停用迴響的快取"
120
-
121
- #: options.php:196
122
- msgid "When users leave comments, WordPress show pages with their comments even if in moderation (and not visible to others) and pre-fills the comment form."
123
- msgstr "當使用者發表迴響時,即使迴響還在審核中(而且其他人不可見),WordPress 也會先預填迴響表格,將他們的留言顯示到頁面上。"
124
-
125
- #: options.php:198
126
- msgid "If you want to keep those features, enable this option."
127
- msgstr "如果你想要保留這些功能,請啟用這個選項。"
128
-
129
- #: options.php:199
130
- msgid "The caching system will be less efficient but the blog more usable."
131
- msgstr "這樣做會降低快取系統的效率,但部落格會更便於使用。"
132
-
133
- #: options.php:206
134
- msgid "Feeds caching"
135
- msgstr "RSS 快取"
136
-
137
- #: options.php:210
138
- msgid "When enabled the blog feeds will be cache as well."
139
- msgstr "當啟用後部落格的 RSS 也會被快取。"
140
-
141
- #: options.php:211
142
- msgid "Usually this options has to be left unchecked but if your blog is rather static, you can enable it and have a bit more efficiency"
143
- msgstr "通常這個選項必定是不勾選,不過如果你的部落格是比較靜態的,你可以啟用它來獲得一些效率提升。"
144
-
145
- #: options.php:218
146
- #: options.php:256
147
- #: options.php:297
148
- #: options.php:449
149
- msgid "Update"
150
- msgstr "更新"
151
-
152
- #: options.php:221
153
- msgid "Configuration for mobile devices"
154
- msgstr "行動裝置配置"
155
-
156
- #: options.php:224
157
- msgid "WordPress Mobile Pack"
158
- msgstr "WordPress Mobile Pack"
159
-
160
- #: options.php:228
161
- msgid "Enbale integration with <a href=\"http://wordpress.org/extend/plugins/wordpress-mobile-pack/\">WordPress Mobile Pack</a> plugin. If you have that plugin, Hyper Cache use it to detect mobile devices and caches saparately the different pages generated."
162
- msgstr "啟用後會整合 <a href=\"http://wordpress.org/extend/plugins/wordpress-mobile-pack/\">WordPress Mobile Pack</a> 外掛。如果你有使用這外掛,Hyper Cache 會利用它來檢測行動裝置,並且在不同頁面產生時個別快取。"
163
-
164
- #: options.php:234
165
- msgid "Detect mobile devices"
166
- msgstr "偵測行動裝置"
167
-
168
- #: options.php:238
169
- msgid "When enabled mobile devices will be detected and the cached page stored under different name."
170
- msgstr "當啟用時,行動裝置將會偵測並且將快取頁面存到不同的名稱底下。"
171
-
172
- #: options.php:239
173
- msgid "This makes blogs with different themes for mobile devices to work correctly."
174
- msgstr "這讓那些使用行動裝置訪問時會採用不同佈景主題的部落格也能夠正常工作。"
175
-
176
- #: options.php:245
177
- msgid "Mobile agent list"
178
- msgstr "行動代理商清單"
179
-
180
- #: options.php:249
181
- msgid "One per line mobile agents to check for when a page is requested."
182
- msgstr "當請求頁面時,會逐行檢查每一個行動代理商。"
183
-
184
- #: options.php:250
185
- msgid "The mobile agent string is matched against the agent a device is sending to the server."
186
- msgstr "行動代理商的字串符合時,會將相對的代理商裝置傳送到伺服器。"
187
-
188
- #: options.php:260
189
- msgid "Compression"
190
- msgstr "壓縮"
191
-
192
- #: options.php:264
193
- msgid "Your hosting space has not the \"gzencode\" or \"gzinflate\" function, so no compression options are available."
194
- msgstr "你的 Host 主機沒有「gzencode」或「gzinflate」功能,所以沒有可以使用的壓縮選項。"
195
-
196
- #: options.php:270
197
- msgid "Enable compression"
198
- msgstr "啟用壓縮"
199
-
200
- #: options.php:274
201
- msgid "When possible the page will be sent compressed to save bandwidth."
202
- msgstr "當選項可用時,會進行頁面壓縮以節省頻寬。"
203
-
204
- #: options.php:275
205
- msgid "Only the textual part of a page can be compressed, not images, so a photo blog will consume a lot of bandwidth even with compression enabled."
206
- msgstr "只有頁面的文字部分可以被壓縮而不是圖片,因此以照片為主的部落格即使啟用壓縮,也還是會消耗大量頻寬。"
207
-
208
- #: options.php:277
209
- #: options.php:291
210
- msgid "Leave the options disabled if you note malfunctions, like blank pages."
211
- msgstr "如果你很在意會發生故障(如空白頁)的話,請保留此選項停用。"
212
-
213
- #: options.php:279
214
- msgid "If you enable this option, the option below will be enabled as well."
215
- msgstr "如果你啟用這選項,底下的選項也同樣會啟用。"
216
-
217
- #: options.php:285
218
- msgid "Disk space usage"
219
- msgstr "磁碟空間使用情況"
220
-
221
- #: options.php:289
222
- msgid "Enable this option to minimize disk space usage."
223
- msgstr "啟用此選項來最大限度地減少磁碟空間使用情況,"
224
-
225
- #: options.php:290
226
- msgid "The cache will be a little less performant."
227
- msgstr "會稍微減少一些快取的性能。"
228
-
229
- #: options.php:302
230
- msgid "Advanced options"
231
- msgstr "進階選項"
232
-
233
- #: options.php:306
234
- msgid "Translation"
235
- msgstr "翻譯"
236
-
237
- #: options.php:310
238
- msgid "DO NOT show this panel translated."
239
- msgstr "不顯示 Hyper Cache 選項面板的翻譯。"
240
-
241
- #: options.php:316
242
- msgid "Disable Last-Modified header"
243
- msgstr "停用「頁首 Last-Modified」"
244
-
245
- #: options.php:320
246
- msgid "Disable some HTTP headers (Last-Modified) which improve performances but some one is reporting they create problems which some hosting configurations."
247
- msgstr "停用一些 HTTP 頁首屬性(Last-Modified)可以增進效能,不過有些人反映說一些 Host 主機商的配置會產生問題。"
248
-
249
- #: options.php:326
250
- msgid "Home caching"
251
- msgstr "「首頁」快取"
252
-
253
- #: options.php:330
254
- msgid "DO NOT cache the home page so it is always fresh."
255
- msgstr "不快取首頁,因此首頁總是保持最新狀態。"
256
-
257
- #: options.php:336
258
- msgid "Redirect caching"
259
- msgstr "「重定向」快取"
260
-
261
- #: options.php:340
262
- msgid "Cache WordPress redirects."
263
- msgstr "快取 WordPress 的重定向。"
264
-
265
- #: options.php:341
266
- msgid "WordPress sometime sends back redirects that can be cached to avoid further processing time."
267
- msgstr "WordPress 有時會回傳重定向,可以把這裡快取以避免增加處理的時間。"
268
-
269
- #: options.php:346
270
- msgid "Page not found caching (HTTP 404)"
271
- msgstr "「找不到網頁」快取 (404 錯誤)"
272
-
273
- #: options.php:353
274
- msgid "Strip query string"
275
- msgstr "從查詢字串中刪除不必要內容"
276
-
277
- #: options.php:357
278
- msgid "This is a really special case, usually you have to kept it disabled. When enabled, URL with query string will be reduced removing the query string. So the URL http://www.domain.com/post-title and http://www.domain.com/post-title?a=b&amp;c=d are cached as a single page.<br />Setting this option disable the next one."
279
- msgstr "這是一個非常特殊的情況,通常你必須保持選項停用。當啟用後,帶有查詢字串的網址將會縮減和移除查詢字串。因此網址例如「http://www.domain.com/post-title」和「http://www.domain.com/post-title?a=b&amp;c=d」都會快取到同一個頁面。<br />設定(啟用)這個選項時要停用下一個選項。"
280
-
281
- #: options.php:362
282
- msgid "<strong>Many plugins can stop to work correctly with this option enabled (eg. my <a href=\"http://www.satollo.net/plugins/newsletter\">Newsletter plugin</a>)</strong>"
283
- msgstr "<strong>啟用這個選項可能會阻擋許多外掛的正確運作(例如:我的 <a href=\"http://www.satollo.net/plugins/newsletter\">Newsletter 外掛</a>)。</strong>"
284
-
285
- #: options.php:369
286
- msgid "URL with parameters"
287
- msgstr "帶參數的網址"
288
-
289
- #: options.php:373
290
- msgid "Cache requests with query string (parameters)."
291
- msgstr "帶有查詢字串(參數)的快取請求。"
292
-
293
- #: options.php:374
294
- msgid "This option has to be enabled for blogs which have post URLs with a question mark on them."
295
- msgstr "對於那些文章網址上面帶有問號的部落格,啟用這個選項是必要的。"
296
-
297
- #: options.php:375
298
- msgid "This option is disabled by default because there is plugins which use URL parameter to perform specific action that cannot be cached"
299
- msgstr "這個選項預設為停用,因為有一些外掛使用網址參數來執行無法被快取的特殊操作。"
300
-
301
- #: options.php:377
302
- msgid "For who is using search engines friendly permalink format is safe to leave this option disabled, no performances will be lost."
303
- msgstr "對於那些使用對搜尋引擎友好的固定網址格式的人來說,停用這個選項是無害的,不會有效能上的任何損失。"
304
-
305
- #: options.php:385
306
- msgid "Filters"
307
- msgstr "過濾"
308
-
309
- #: options.php:387
310
- msgid "Here you can: exclude pages and posts from the cache, specifying their address (URI); disable Hyper Cache for specific User Agents (browsers, bot, mobile devices, ...); disable the cache for users that have specific cookies."
311
- msgstr "這裡你可以:經由指定位址(URI),從快取中排除這些頁面和文章;對特定的「使用者代理」停用 Hyper Cache(瀏覽器、機器人、行動裝置 ... );對那些有特定 Cookie 的使用者停用快取。"
312
-
313
- #: options.php:392
314
- msgid "URI to reject"
315
- msgstr "拒絕的位址"
316
-
317
- #: options.php:396
318
- msgid "Write one URI per line, each URI has to start with a slash."
319
- msgstr "每行寫一個位址,每個位址必須以斜線開頭(例如 /video/my-new-performance)。"
320
-
321
- #: options.php:397
322
- msgid "A specified URI will match the requested URI if the latter starts with the former."
323
- msgstr "如果請求的位址是以上面這些指定的「拒絕的位址」開頭,就從快取中排除這些位址。"
324
-
325
- #: options.php:398
326
- msgid "If you want to specify a stric matching, surround the URI with double quotes."
327
- msgstr "如果你想指定一個比較嚴謹的符合,請在位址前後加上雙引號。"
328
-
329
- #: options.php:418
330
- msgid "Agents to reject"
331
- msgstr "拒絕的代理"
332
-
333
- #: options.php:422
334
- msgid "Write one agent per line."
335
- msgstr "每行寫一個代理。"
336
-
337
- #: options.php:423
338
- msgid "A specified agent will match the client agent if the latter contains the former. The matching is case insensitive."
339
- msgstr "如果代理用戶端(User-Agent)包含在上面這些指定的「拒絕的代理」裡面,就停用快取 。(名稱不分大小寫)"
340
-
341
- #: options.php:429
342
- msgid "Cookies matching"
343
- msgstr "符合的 Cookies"
344
-
345
- #: options.php:433
346
- msgid "Write one cookie name per line."
347
- msgstr "每行寫一個 Cookie 的名稱。"
348
-
349
- #: options.php:434
350
- msgid "When a specified cookie will match one of the cookie names sent bby the client the cache stops."
351
- msgstr "當使用者的 Cookie 符合上面這些指定的 Cookie 名稱其中之一時,就會停止對客戶端的快取。"
352
-
353
- #: options.php:437
354
- msgid "It seems you have Facebook Connect plugin installed. Add this cookie name to make it works with Hyper Cache:"
355
- msgstr "你似乎有安裝 Facebook Connect 外掛,新增這個 Cookie 名稱讓 Hyper Cache 能夠正常運作:"
356
-
357
- #. Description of the plugin/theme
358
- msgid "Hyper Cache is a cache system for WordPress to improve it's perfomances and save resources. <a href=\"http://www.satollo.net/plugins/hyper-cache\" target=\"_blank\">Hyper Cache official page</a>. To manually upgrade remember the sequence: deactivate, update, reactivate."
359
- msgstr "Hyper Cache 是用來提升 WordPress 效能以及節省系統資源的快取系統。<a href=\"http://www.satollo.net/plugins/hyper-cache\" target=\"_blank\">Hyper Cache 官方網頁</a>,手動升級請記得這些順序:停用、更新、啟用。|繁體中文語系:<a href=\"http://ragnarok.3dsydesign.com/\" target=\"_blank\">Ragnarok</a>|教學:<a href=\"http://ragnarok.3dsydesign.com/38/hyper-cache/\" target=\"_blank\">Hyper Cache 教學</a>"
360
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
hyper-cache.pot DELETED
@@ -1,383 +0,0 @@
1
- # Copyright (C) 2012
2
- # This file is distributed under the same license as the package.
3
- msgid ""
4
- msgstr ""
5
- "Project-Id-Version: \n"
6
- "Report-Msgid-Bugs-To: http://wordpress.org/tag/hyper-cache\n"
7
- "POT-Creation-Date: 2012-01-25 22:02:42+00:00\n"
8
- "MIME-Version: 1.0\n"
9
- "Content-Type: text/plain; charset=UTF-8\n"
10
- "Content-Transfer-Encoding: 8bit\n"
11
- "PO-Revision-Date: 2012-MO-DA HO:MI+ZONE\n"
12
- "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
- "Language-Team: LANGUAGE <LL@li.org>\n"
14
-
15
- #: options.php:92
16
- msgid ""
17
- "You must add to the file wp-config.php (at its beginning after the &lt;?php) "
18
- "the line of code: <code>define('WP_CACHE', true);</code>."
19
- msgstr ""
20
-
21
- #: options.php:103
22
- msgid ""
23
- "<p><strong>Options saved BUT not active because Hyper Cache was not able to "
24
- "update the file wp-content/advanced-cache.php (is it writable?).</strong></p>"
25
- msgstr ""
26
-
27
- #: options.php:109
28
- msgid ""
29
- "<p><strong>Hyper Cache was not able to create the folder \"wp-content/cache/"
30
- "hyper-cache\". Make it manually setting permissions to 777.</strong></p>"
31
- msgstr ""
32
-
33
- #: options.php:114
34
- msgid ""
35
- "You can find more details about configurations and working mode on <a href="
36
- "\"%s\">Hyper Cache official page</a>."
37
- msgstr ""
38
-
39
- #: options.php:123
40
- msgid "Clear cache"
41
- msgstr ""
42
-
43
- #: options.php:126
44
- msgid "Cache status"
45
- msgstr ""
46
-
47
- #: options.php:129
48
- msgid "Files in cache (valid and expired)"
49
- msgstr ""
50
-
51
- #: options.php:133
52
- msgid "Cleaning process"
53
- msgstr ""
54
-
55
- #: options.php:135
56
- msgid "Next run on: "
57
- msgstr ""
58
-
59
- #: options.php:142
60
- msgid ""
61
- "The cleaning process runs hourly and it's ok to run it hourly: that grant "
62
- "you an efficient cache. If above there is not a valid next run time, wait 10 "
63
- "seconds and reenter this panel. If nothing change, try to deactivate and "
64
- "reactivate Hyper Cache."
65
- msgstr ""
66
-
67
- #: options.php:149
68
- msgid "Configuration"
69
- msgstr ""
70
-
71
- #: options.php:154
72
- msgid "Cached pages timeout"
73
- msgstr ""
74
-
75
- #: options.php:157
76
- msgid "minutes"
77
- msgstr ""
78
-
79
- #: options.php:159
80
- msgid ""
81
- "Minutes a cached page is valid and served to users. A zero value means a "
82
- "cached page is\r\n"
83
- " valid forever."
84
- msgstr ""
85
-
86
- #: options.php:161
87
- msgid ""
88
- "If a cached page is older than specified value (expired) it is no more used "
89
- "and\r\n"
90
- " will be regenerated on next request of it."
91
- msgstr ""
92
-
93
- #: options.php:163
94
- msgid "720 minutes is half a day, 1440 is a full day and so on."
95
- msgstr ""
96
-
97
- #: options.php:169
98
- msgid "Cache invalidation mode"
99
- msgstr ""
100
-
101
- #: options.php:172
102
- msgid "All cached pages"
103
- msgstr ""
104
-
105
- #: options.php:173
106
- msgid "Only modified posts"
107
- msgstr ""
108
-
109
- #: options.php:174
110
- msgid "Only modified pages"
111
- msgstr ""
112
-
113
- #: options.php:175
114
- msgid "Nothing"
115
- msgstr ""
116
-
117
- #: options.php:179
118
- msgid "Invalidate home, archives, categories on single post invalidation"
119
- msgstr ""
120
-
121
- #: options.php:182
122
- msgid ""
123
- "\"Invalidation\" is the process of deleting cached pages when they are no "
124
- "more valid."
125
- msgstr ""
126
-
127
- #: options.php:183
128
- msgid ""
129
- "Invalidation process is started when blog contents are modified (new post, "
130
- "post update, new comment,...) so\r\n"
131
- " one or more cached pages need to be refreshed to get that new "
132
- "content."
133
- msgstr ""
134
-
135
- #: options.php:185
136
- msgid ""
137
- "A new comment submission or a comment moderation is considered like a post "
138
- "modification\r\n"
139
- " where the post is the one the comment is relative to."
140
- msgstr ""
141
-
142
- #: options.php:192
143
- msgid "Disable cache for commenters"
144
- msgstr ""
145
-
146
- #: options.php:196
147
- msgid ""
148
- "When users leave comments, WordPress show pages with their comments even if "
149
- "in moderation\r\n"
150
- " (and not visible to others) and pre-fills the comment form."
151
- msgstr ""
152
-
153
- #: options.php:198
154
- msgid "If you want to keep those features, enable this option."
155
- msgstr ""
156
-
157
- #: options.php:199
158
- msgid "The caching system will be less efficient but the blog more usable."
159
- msgstr ""
160
-
161
- #: options.php:206
162
- msgid "Feeds caching"
163
- msgstr ""
164
-
165
- #: options.php:210
166
- msgid "When enabled the blog feeds will be cache as well."
167
- msgstr ""
168
-
169
- #: options.php:211
170
- msgid ""
171
- "Usually this options has to be left unchecked but if your blog is rather "
172
- "static,\r\n"
173
- " you can enable it and have a bit more efficiency"
174
- msgstr ""
175
-
176
- #: options.php:218 options.php:256 options.php:297 options.php:449
177
- msgid "Update"
178
- msgstr ""
179
-
180
- #: options.php:221
181
- msgid "Configuration for mobile devices"
182
- msgstr ""
183
-
184
- #: options.php:234
185
- msgid "Detect mobile devices"
186
- msgstr ""
187
-
188
- #: options.php:238
189
- msgid ""
190
- "When enabled mobile devices will be detected and the cached page stored "
191
- "under different name."
192
- msgstr ""
193
-
194
- #: options.php:239
195
- msgid ""
196
- "This makes blogs with different themes for mobile devices to work correctly."
197
- msgstr ""
198
-
199
- #: options.php:245
200
- msgid "Mobile agent list"
201
- msgstr ""
202
-
203
- #: options.php:249
204
- msgid "One per line mobile agents to check for when a page is requested."
205
- msgstr ""
206
-
207
- #: options.php:250
208
- msgid ""
209
- "The mobile agent string is matched against the agent a device is sending to "
210
- "the server."
211
- msgstr ""
212
-
213
- #: options.php:260
214
- msgid "Compression"
215
- msgstr ""
216
-
217
- #: options.php:264
218
- msgid ""
219
- "Your hosting space has not the \"gzencode\" or \"gzinflate\" function, so no "
220
- "compression options are available."
221
- msgstr ""
222
-
223
- #: options.php:270
224
- msgid "Enable compression"
225
- msgstr ""
226
-
227
- #: options.php:274
228
- msgid "When possible the page will be sent compressed to save bandwidth."
229
- msgstr ""
230
-
231
- #: options.php:275
232
- msgid ""
233
- "Only the textual part of a page can be compressed, not images, so a photo\r\n"
234
- " blog will consume a lot of bandwidth even with compression enabled."
235
- msgstr ""
236
-
237
- #: options.php:277 options.php:291
238
- msgid "Leave the options disabled if you note malfunctions, like blank pages."
239
- msgstr ""
240
-
241
- #: options.php:279
242
- msgid "If you enable this option, the option below will be enabled as well."
243
- msgstr ""
244
-
245
- #: options.php:285
246
- msgid "Disk space usage"
247
- msgstr ""
248
-
249
- #: options.php:289
250
- msgid "Enable this option to minimize disk space usage."
251
- msgstr ""
252
-
253
- #: options.php:290
254
- msgid "The cache will be a little less performant."
255
- msgstr ""
256
-
257
- #: options.php:302
258
- msgid "Advanced options"
259
- msgstr ""
260
-
261
- #: options.php:306
262
- msgid "Translation"
263
- msgstr ""
264
-
265
- #: options.php:310
266
- msgid "DO NOT show this panel translated."
267
- msgstr ""
268
-
269
- #: options.php:316
270
- msgid "Disable Last-Modified header"
271
- msgstr ""
272
-
273
- #: options.php:320
274
- msgid ""
275
- "Disable some HTTP headers (Last-Modified) which improve performances but "
276
- "some one is reporting they create problems which some hosting configurations."
277
- msgstr ""
278
-
279
- #: options.php:326
280
- msgid "Home caching"
281
- msgstr ""
282
-
283
- #: options.php:330
284
- msgid "DO NOT cache the home page so it is always fresh."
285
- msgstr ""
286
-
287
- #: options.php:336
288
- msgid "Redirect caching"
289
- msgstr ""
290
-
291
- #: options.php:340
292
- msgid "Cache WordPress redirects."
293
- msgstr ""
294
-
295
- #: options.php:341
296
- msgid ""
297
- "WordPress sometime sends back redirects that can be cached to avoid further "
298
- "processing time."
299
- msgstr ""
300
-
301
- #: options.php:346
302
- msgid "Page not found caching (HTTP 404)"
303
- msgstr ""
304
-
305
- #: options.php:369
306
- msgid "URL with parameters"
307
- msgstr ""
308
-
309
- #: options.php:373
310
- msgid "Cache requests with query string (parameters)."
311
- msgstr ""
312
-
313
- #: options.php:374
314
- msgid ""
315
- "This option has to be enabled for blogs which have post URLs with a question "
316
- "mark on them."
317
- msgstr ""
318
-
319
- #: options.php:375
320
- msgid ""
321
- "This option is disabled by default because there is plugins which use\r\n"
322
- " URL parameter to perform specific action that cannot be cached"
323
- msgstr ""
324
-
325
- #: options.php:377
326
- msgid ""
327
- "For who is using search engines friendly permalink format is safe to\r\n"
328
- " leave this option disabled, no performances will be lost."
329
- msgstr ""
330
-
331
- #: options.php:392
332
- msgid "URI to reject"
333
- msgstr ""
334
-
335
- #: options.php:396
336
- msgid "Write one URI per line, each URI has to start with a slash."
337
- msgstr ""
338
-
339
- #: options.php:397
340
- msgid ""
341
- "A specified URI will match the requested URI if the latter starts with the "
342
- "former."
343
- msgstr ""
344
-
345
- #: options.php:398
346
- msgid ""
347
- "If you want to specify a stric matching, surround the URI with double quotes."
348
- msgstr ""
349
-
350
- #: options.php:418
351
- msgid "Agents to reject"
352
- msgstr ""
353
-
354
- #: options.php:422
355
- msgid "Write one agent per line."
356
- msgstr ""
357
-
358
- #: options.php:423
359
- msgid ""
360
- "A specified agent will match the client agent if the latter contains the "
361
- "former. The matching is case insensitive."
362
- msgstr ""
363
-
364
- #: options.php:429
365
- msgid "Cookies matching"
366
- msgstr ""
367
-
368
- #: options.php:433
369
- msgid "Write one cookie name per line."
370
- msgstr ""
371
-
372
- #: options.php:434
373
- msgid ""
374
- "When a specified cookie will match one of the cookie names sent bby the "
375
- "client the cache stops."
376
- msgstr ""
377
-
378
- #: options.php:437
379
- msgid ""
380
- "It seems you have Facebook Connect plugin installed. Add this cookie name to "
381
- "make it works\r\n"
382
- " with Hyper Cache:"
383
- msgstr ""
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
languages/hyper-cache-ru_RU.mo ADDED
Binary file
languages/hyper-cache-ru_RU.po ADDED
@@ -0,0 +1,510 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # SOME DESCRIPTIVE TITLE.
2
+ # This file is put in the public domain.
3
+ # FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
4
+ #
5
+ msgid ""
6
+ msgstr ""
7
+ "Project-Id-Version: Hyper Cache 3.0.2\n"
8
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/hyper-cache\n"
9
+ "POT-Creation-Date: 2009-09-29 15:57+0000\n"
10
+ "PO-Revision-Date: 2014-09-07 14:35+0700\n"
11
+ "Last-Translator: artnikov <artnikov@ya.ru>\n"
12
+ "Language-Team: \n"
13
+ "MIME-Version: 1.0\n"
14
+ "Content-Type: text/plain; charset=UTF-8\n"
15
+ "Content-Transfer-Encoding: 8bit\n"
16
+ "Language: ru_RU\n"
17
+ "X-Generator: Poedit 1.6.7\n"
18
+
19
+ #: options.php:70
20
+ msgid "Options saved. If you changes any of the bypasses empty the cache."
21
+ msgstr ""
22
+ "Настройки сохранены. Если вы изменяете страницы, то исключения изменяются в "
23
+ "кеше"
24
+
25
+ #: options.php:75
26
+ #, php-format
27
+ msgid ""
28
+ "Unable to write the <code>wp-content/advanced-cache.php</code> file. Check "
29
+ "the file or folder permissions."
30
+ msgstr ""
31
+ "Не удается создать файл <code>wp-content/advanced-cache.php</code> file. "
32
+
33
+ #: options.php:83
34
+ msgid "The cache folder has been cleaned."
35
+ msgstr "Кэш папка была очищена."
36
+
37
+ #: options.php:88
38
+ msgid "Done!"
39
+ msgstr "Отлично!"
40
+
41
+ #: options.php:125
42
+ msgid "Options deleted"
43
+ msgstr "Настройки сброшены"
44
+
45
+ #: options.php:130
46
+ msgid "Cache size"
47
+ msgstr "Размер КЭШа"
48
+
49
+ #: options.php:141
50
+ msgid "Old Hyper Cache options are missing or not readable."
51
+ msgstr "Настройки ранней версии Hyper Cache отсутствуют или повреждены."
52
+
53
+ #: options.php:164
54
+ msgid "Old options imported, now review them and save."
55
+ msgstr "Прежние настройки импортированы, их можно просмотреть и сохранить."
56
+
57
+ #: options.php:213
58
+ #, php-format
59
+ msgid ""
60
+ "You must add to the file wp-config.php (after the <code>define(\"WPLANG\", "
61
+ "\"\");</code>) the line of code: <code>define(\"WP_CACHE\", true);</code>"
62
+ msgstr ""
63
+ "Вы должны добавить в файле wp-config.php (после строки <code>define(\"WPLANG"
64
+ "\", \"\");</code>) код: <code>define(\"WP_CACHE\", true);</code>."
65
+
66
+ #: options.php:222
67
+ msgid "You must save the options since some files must be updated."
68
+ msgstr "Вы должны сохранить настройки, так как файлы должны быть обновлены."
69
+
70
+ #: options.php:229
71
+ #, php-format
72
+ msgid "Hyper Cache was not able to create or find the"
73
+ msgstr "Hyper Cache не удалось создать или найти"
74
+
75
+ #: options.php:231
76
+ #, php-format
77
+ msgid ""
78
+ "folder, please create it manually with list, write and read permissions "
79
+ "(usually 777)."
80
+ msgstr "папку, пожалуйста создайте его вручную, с правами (обычно 777)."
81
+
82
+ #: options.php:236
83
+ #, php-format
84
+ msgid ""
85
+ "You should choose a different <a href=\"options-permalink.php\" target="
86
+ "\"_blank\"> permalink structure under the Permalink panel</a> otherwise "
87
+ "Hyper Cache cannot work properly."
88
+ msgstr ""
89
+ "Вы должны выбрать другую папку <a href=\"options-permalink.php\" target="
90
+ "\"_blank\"> для постоянной ссылки</a> в противном случае Hyper Cache не "
91
+ "может работать должным образом."
92
+
93
+ #: options.php:249
94
+ #, php-format
95
+ msgid ""
96
+ "Please, refer to the <a href=\"http://www.satollo.net/plugins/hyper-cache\" "
97
+ "target=\"_blank\">official page</a> and the <a href=\"http://www.satollo.net/"
98
+ "forums/forum/hyper-cache\" target=\"_blank\">official forum</a> for support. "
99
+ "<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-"
100
+ "xclick&hosted_button_id=5PHGDGNHAYLJ8\" target=\"_blank\"><img style="
101
+ "\"vertical-align: bottom\" src=\"http://www.satollo.net/images/donate.png"
102
+ "\"></a> Even <b>2$</b> helps! (<a href=\"http://www.satollo.net/donations\" "
103
+ "target=\"_blank\">read more</a>)"
104
+ msgstr ""
105
+ "Пожалуйста, обратитесь к <a href=\"http://www.satollo.net/plugins/hyper-cache"
106
+ "\" target=\"_blank\">официальная страница</a> и <a href=\"http://www.satollo."
107
+ "net/forums/forum/hyper-cache\" target=\"_blank\">официальный форум</a> для "
108
+ "поддержки.<a href=\"https://www.paypal.com/cgi-bin/webscr?cmd=_s-"
109
+ "xclick&hosted_button_id=5PHGDGNHAYLJ8\" target=\"_blank\"><img style="
110
+ "\"vertical-align: bottom\" src=\"http://www.satollo.net/images/donate.png"
111
+ "\"></a> Даже <b>2$</b> поддержка! (<a href=\"http://www.satollo.net/donations"
112
+ "\" target=\"_blank\">читать далее</a>)"
113
+
114
+ #: options.php:252
115
+ #, php-format
116
+ msgid ""
117
+ "Want a full mail marketing system in your blog? Try my free <a href=\"http://"
118
+ "www.satollo.net/plugins/newsletter\" target=\"_blank\">Newsletter</a> plugin."
119
+ msgstr ""
120
+ "Хотите полную маркетинговую почтовую систему на вашем сайте? Пробуйте мой "
121
+ "бесплатный плагин <a href=\"http://www.satollo.net/plugins/newsletter\" "
122
+ "target=\"_blank\">Newsletter</a>."
123
+
124
+ #: options.php:255
125
+ msgid "Clean the whole cache"
126
+ msgstr "Удалить весь кеш"
127
+
128
+ #: options.php:256
129
+ msgid "Clean home and archives"
130
+ msgstr "Очистка архивов и домашней"
131
+
132
+ #: options.php:257
133
+ msgid "Compute the cache size"
134
+ msgstr "Вычесление размера КЕШа"
135
+
136
+ #: options.php:258
137
+ msgid "Import old options"
138
+ msgstr "Импортировать настройки"
139
+
140
+ #: options.php:259
141
+ msgid "Sure? Your setting will be overwritten."
142
+ msgstr "Уверены? Ваши настройки будут записаны поверх!"
143
+
144
+ #: options.php:264
145
+ msgid "General"
146
+ msgstr "Главные"
147
+
148
+ #: options.php:265
149
+ msgid "Bypasses"
150
+ msgstr "Исключения"
151
+
152
+ #: options.php:266
153
+ msgid "Mobile"
154
+ msgstr "Мобильный"
155
+
156
+ #: options.php:273
157
+ msgid "Disable translations"
158
+ msgstr "Отключить перевод"
159
+
160
+ #: options.php:275
161
+ msgid "Disable"
162
+ msgstr "Отключить"
163
+
164
+ #: options.php:277
165
+ msgid ""
166
+ "If you want to see this panel with the original labels, you can disable the "
167
+ "tranlsation."
168
+ msgstr "Если ВЫ хотите видеть настройки без перевода, можете его отключить."
169
+
170
+ #: options.php:282
171
+ msgid "Cached pages will be valid for"
172
+ msgstr "Кэшированные страницы, будут действительны в течение"
173
+
174
+ #: options.php:286
175
+ msgid "0 means forever."
176
+ msgstr "0 означает, что навсегда."
177
+
178
+ #: options.php:290
179
+ msgid "Enable compression"
180
+ msgstr "Включить сжатие"
181
+
182
+ #: options.php:295
183
+ msgid ""
184
+ "If you note odd characters when enabled, disable it since your server is "
185
+ "already compressing the pages."
186
+ msgstr ""
187
+ "Если на сайте появились нечитаемые символы, то лучше отключить, так как на "
188
+ "сервере существует сжатие .gzip"
189
+
190
+ #: options.php:300
191
+ msgid "When the home is refreshed, refresh even the"
192
+ msgstr "Когда обновлена домашняя страница, обновятся остальные."
193
+
194
+ #: options.php:303
195
+ msgid "latest post"
196
+ msgstr "последние записи"
197
+
198
+ #: options.php:305
199
+ msgid "The number of latest posts to invalidate when the home is invalidated."
200
+ msgstr "Число последних записей, изменятся, когда изменена главная."
201
+
202
+ #: options.php:310
203
+ msgid "Cache folder"
204
+ msgstr "Папки кэша"
205
+
206
+ #: options.php:313
207
+ msgid "path on disk"
208
+ msgstr "путь к папке"
209
+
210
+ #: options.php:315
211
+ #, php-format
212
+ msgid ""
213
+ "Leave blank for default value. You can even evaluate to leave this blank and "
214
+ "create a symbolic link"
215
+ msgstr ""
216
+ "Не включено по умолчанию. Вы можете проверить и создать символическую ссылку"
217
+
218
+ #: options.php:317
219
+ msgid "Your blog is located on"
220
+ msgstr "блог находится на"
221
+
222
+ #: options.php:319
223
+ msgid "A wrong configuration can destroy your blog."
224
+ msgstr "Неправильная конфигурация может уничтожить ваш сайт."
225
+
226
+ #: options.php:324
227
+ msgid "Next autoclean will run in"
228
+ msgstr "Далее эта функция будет выполняться в"
229
+
230
+ #: options.php:327
231
+ msgid "minutes"
232
+ msgstr "минуты"
233
+
234
+ #: options.php:327
235
+ msgid "The autoclean process removes old files to save disk space."
236
+ msgstr ""
237
+ "Автоочистка, удаляет устаревшие файлы, для оптимизации дискового "
238
+ "пространства."
239
+
240
+ #: options.php:334
241
+ msgid "Allow browser caching"
242
+ msgstr "Разрешение кеширования браузерами"
243
+
244
+ #: options.php:336
245
+ msgid "enable it"
246
+ msgstr "Допустить"
247
+
248
+ #: options.php:338
249
+ msgid "with an expire time of"
250
+ msgstr "по истечению"
251
+
252
+ #: options.php:340 #: options.php:287
253
+ msgid "hours"
254
+ msgstr "часов"
255
+
256
+ #: options.php:342
257
+ msgid ""
258
+ "When enabled Hyper Cache sends a signal to the browser allowing it to NOT "
259
+ "request a page more than once andto use the copy it has in the local cache. "
260
+ "If you set an expire time greater than zero, the browser should keep the "
261
+ "copy for that amount of hours, otherwise Hyper Cache will tell the browser "
262
+ "to keep the copy until the page expire in the blog cache.<br>Usually I keep "
263
+ "this feature disabled."
264
+ msgstr ""
265
+ "Когда включен, Hyper Cache посылает сигнал браузеру, позволяющий НЕ просить, "
266
+ "чтобы страница постоянно использовала копию, которая имеется в кэше. Если Вы "
267
+ "устанавливаете время сохранения, больше чем ноль, браузер должен сохранить "
268
+ "копию определенное время, иначе Hyper Cache скажет браузеру сохранять копию, "
269
+ "пока не истечет время сохранения в кэше сайта.<br>Обычно я оставляю эту "
270
+ "настройку заблокированной."
271
+
272
+ #: options.php:348
273
+ msgid "HTTPS separated cache"
274
+ msgstr "Не кешировать HTTPS запросы"
275
+
276
+ #: options.php:377
277
+ msgid "Do not cache the home page"
278
+ msgstr "Не кэшировать главную страницу"
279
+
280
+ #: options.php:381
281
+ msgid ""
282
+ "When active, the home page and its subpages are not cached. Works even with "
283
+ "a static home page."
284
+ msgstr ""
285
+ "Когда активно, домашняя страница и его подстраницы не кэшируются. Работает "
286
+ "даже со статической домашней страницей."
287
+
288
+ #: options.php:386
289
+ msgid "Do not cache the \"404 - Not found\" page"
290
+ msgstr "Не кэшировать \"стр.404\" "
291
+
292
+ #: options.php:391
293
+ msgid ""
294
+ "When active, Hyper Cache does not serve a cached 404 not found page. "
295
+ "Requests which lead to a 404 not found page overload you blog since "
296
+ "WordPress must generate a full page so caching it help in reduce that "
297
+ "overload."
298
+ msgstr ""
299
+ "Когда активно, Hyper Cache не работает с кэшируемым 404, страницей. Запросы, "
300
+ "которые приводят к 404 перегружают сайт, так как WordPress должен выдать "
301
+ "полную страницу... , включение параметра помогает уменьшить нагрузку"
302
+
303
+ #: options.php:395
304
+ msgid "Do not cache the blog main feeds"
305
+ msgstr "Не кешировать ленту комментариев"
306
+
307
+ #: options.php:402
308
+ msgid "When active, the main blog feed %s is not cached."
309
+ msgstr "Когда активно, главная лента новостей RSS не кэшируется"
310
+
311
+ #: options.php:405
312
+ msgid "Do not cache single post comment feed"
313
+ msgstr "Не кешировать ленту RSS комментариев"
314
+
315
+ #: options.php:412
316
+ msgid ""
317
+ "When active, the single post comment feedis not cached. Usually I enable "
318
+ "this reject since it saves disk space and comment feed on single posts are "
319
+ "not usually used."
320
+ msgstr ""
321
+ "Когда активно, страница комментариев не кэшируется. Обычно включается, так "
322
+ "как это сохраняет дисковое пространство."
323
+
324
+ #: options.php:418
325
+ msgid "Exact URIs to bypass"
326
+ msgstr "Точный URI исключение"
327
+
328
+ #: options.php:416 options.php:427 options.php:438 options.php:450
329
+ #: options.php:420
330
+ msgid "Enable"
331
+ msgstr "Включить"
332
+
333
+ #: options.php:422
334
+ #, php-format
335
+ msgid ""
336
+ "Those URIs are exactly matched. For example if you add the <code>/my-single-"
337
+ "post</code> URI and a request is received for <code>http://youblog."
338
+ "com<strong>/my-single-post</strong></code> that page is not cached. A "
339
+ "request for <code>http://youblog.com<strong>/my-single-post-something</"
340
+ "strong></code> IS cached."
341
+ msgstr ""
342
+ "Тем URIs точно соответствуют. Например, если Вы добавляете <code>/my-single-"
343
+ "post </code>, URI и запрос получены для <code>http://youblog.com<strong>/my-"
344
+ "single-post</strong></code>, что страница не кэшируется. Запрос о "
345
+ "<code>http://youblog.com<strong>/my-single-post-something</strong></code> "
346
+ "кэшируется."
347
+
348
+ #: options.php:431
349
+ msgid "(Starting with) URIs to bypass"
350
+ msgstr "(Начиная с) URI исключить"
351
+
352
+ #: options.php:437
353
+ #, php-format
354
+ msgid ""
355
+ "Those URIs match is a requested URI starts with one of them. For example if "
356
+ "you add the <code>/my-single-post</code> URI and a request is received for "
357
+ "<code>http://youblog.com<strong>/my-single-post</strong></code> that page IS "
358
+ "cached. A request for <code>http://youblog.com<strong>/my-single-post-"
359
+ "something</strong></code> IS cached as well."
360
+ msgstr ""
361
+ "То соответствие URIs - требуемые начала URI с одним из них. Например, если "
362
+ "Вы добавляете<code>/my-single-post</code> URI кешируется так же <code>http://"
363
+ "youblog.com<strong>/my-single-post</strong></code> та страница кэшируется. "
364
+ "Запрос к <code>http://youblog.com<strong>/my-single-post-something</strong></"
365
+ "code> Кэшируется также."
366
+
367
+ #: options.php:445
368
+ msgid "Cookies to bypass"
369
+ msgstr "Куки исключить"
370
+
371
+ #: options.php:452 options.php:441 options.php:530 options.php:430 #:
372
+ #: options.php:419 options.php:516
373
+ msgid "One per line"
374
+ msgstr "По одному адресу в строке"
375
+
376
+ #: options.php:451
377
+ msgid ""
378
+ "If the visitor has a cookie named as one of the listed values, the cache is "
379
+ "bypassed."
380
+ msgstr ""
381
+ "Если указанная строка совпадает с одним из имен Cookies, кэш исключается."
382
+
383
+ #: options.php:456
384
+ msgid "Devices (user agents) to bypass"
385
+ msgstr "Устройства(пользовательские) исключить"
386
+
387
+ #: options.php:462
388
+ msgid ""
389
+ "If the visitor has a device with a user agent named as one of the listed "
390
+ "values, the cache is bypassed."
391
+ msgstr ""
392
+ "Если посетитель имеет устройство с пользовательским агентом, названным как "
393
+ "одно из перечисленных значений, кэширование не происходит."
394
+
395
+ #: options.php:468
396
+ msgid "Dont serve cached pages to comment authors"
397
+ msgstr "Не кешировать авторские комментарии"
398
+
399
+ #: options.php:472
400
+ msgid ""
401
+ "Hyper Cache is able to work with users who left a comment and completes the "
402
+ "comment form with user data even on cached page (with a small JavaScript "
403
+ "added at the end of the pages). But the \"awaiting moderation\" message "
404
+ "cannot be shown. If you have few commentators, you can disable this feature "
405
+ "to get back the classical WordPress comment flow."
406
+ msgstr ""
407
+ "Hyper Cache способен работать с пользователями, которые оставили комментарий "
408
+ "и завершает комментарий форму с пользовательских данных даже на кэшированной "
409
+ "страницы (с функцией JavaScript добавляется в конце страницы). Но сообщение "
410
+ "\"ожидает модерации\" не может быть показано. Если у вас не много "
411
+ "комментаторов, вы можете отключить эту функцию, чтобы вернуться классический "
412
+ "комментариев поток WordPress ."
413
+
414
+ #: options.php:466
415
+ msgid "days"
416
+ msgstr "дней"
417
+
418
+ #: options.php:482
419
+ msgid "Reject posts older than"
420
+ msgstr "Не кешировать страницы старше"
421
+
422
+ #: options.php:486
423
+ msgid ""
424
+ "Older posts wont be cached and stored resulting in a lower disk space usage. "
425
+ "Useful when older posts have low traffic."
426
+ msgstr ""
427
+ "Архивные страницы, кэшируется и сохранены приводят к экономии дискового "
428
+ "пространства. Полезно, когда старые страницы имеют низкий трафик."
429
+
430
+ #: options.php:480 options.php:497
431
+ msgid "Working mode"
432
+ msgstr "Режим работы"
433
+
434
+ #: options.php:484
435
+ msgid "[disabled] Do not detect mobile devices"
436
+ msgstr "[Отключено] Не обнаруживают мобильных устройств"
437
+
438
+ #: options.php:500
439
+ msgid "[enabled] Detect mobile devices and use a separate cache"
440
+ msgstr ""
441
+ "[Включено] Обнаружение мобильных устройства, используется отдельный кэш"
442
+
443
+ #: options.php:501
444
+ msgid "[enabled] Detect mobile devices and bypass the cache"
445
+ msgstr "[Включено] Обнаружение мобильных устройств и кэша"
446
+
447
+ #: options.php:504
448
+ msgid ""
449
+ "It make sense to disable the cache for mobile devices when their traffic is "
450
+ "very low."
451
+ msgstr ""
452
+ "Имеет смысл отключить кэш для мобильных устройств, когда их трафик очень "
453
+ "низок."
454
+
455
+ #: options.php:509
456
+ msgid "Mobile theme"
457
+ msgstr "Мобильная тема"
458
+
459
+ #: options.php:499
460
+ msgid "Use the active blog theme"
461
+ msgstr "Использование активной темы сайта"
462
+
463
+ #: options.php:519
464
+ msgid ""
465
+ "If you have plugins which produce different content for desktop and mobile "
466
+ "devices, you should use a separate cache for mobile."
467
+ msgstr ""
468
+ "Если Вы имеете дополнения к программе, которые производят различное "
469
+ "содержание для стационарных и мобильных устройств, Вы должны использовать "
470
+ "отдельный кэш для мобильных устройств."
471
+
472
+ #: options.php:520
473
+ msgid ""
474
+ "See for example my <a href=\"http://www.satollo.net/plugins/header-footer\" "
475
+ "target=\"_blank\">Header and Footer</a> plugin for different desktop/mobile "
476
+ "ads injection in posts."
477
+ msgstr ""
478
+ "Смотрите пример использования <a href=\"http://www.satollo.net/plugins/"
479
+ "header-footer\" target=\"_blank\">Header и Footer</a> расширений для "
480
+ "различных устройств."
481
+
482
+ #: options.php:525
483
+ msgid "Mobile user agents"
484
+ msgstr "Мобильные агенты пользователей"
485
+
486
+ #: options.php:528
487
+ msgid "Reset"
488
+ msgstr "Сброс"
489
+
490
+ #: options.php:531
491
+ #, php-format
492
+ msgid ""
493
+ "A \"user agent\" is a text which identify the kind of device used to surf "
494
+ "the site. For example and iPhone has <code>iphone</code> as user agent."
495
+ msgstr ""
496
+ "A \"пользовательский агент \" является текстом, которые идентифицируют вид "
497
+ "используемого устройства заниматься серфингом по сайтам. Например и iPhone "
498
+ "имеет <code>iphone</code> как пользовательский агент."
499
+
500
+ #: options.php:541
501
+ msgid "Save"
502
+ msgstr "Сохранить"
503
+
504
+ #: options.php:544
505
+ msgid "Delete options"
506
+ msgstr "Удалить параметры"
507
+
508
+ #: options.php:545
509
+ msgid "Autoclean"
510
+ msgstr "Автоочистка"
languages/hyper-cache.pot ADDED
@@ -0,0 +1,341 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Copyright (C) 2014
2
+ # This file is distributed under the same license as the package.
3
+ msgid ""
4
+ msgstr ""
5
+ "Project-Id-Version: \n"
6
+ "Report-Msgid-Bugs-To: http://wordpress.org/tag/hyper-cache\n"
7
+ "POT-Creation-Date: 2014-09-16 07:25:25+00:00\n"
8
+ "MIME-Version: 1.0\n"
9
+ "Content-Type: text/plain; charset=UTF-8\n"
10
+ "Content-Transfer-Encoding: 8bit\n"
11
+ "PO-Revision-Date: 2014-MO-DA HO:MI+ZONE\n"
12
+ "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
13
+ "Language-Team: LANGUAGE <LL@li.org>\n"
14
+
15
+ #: options.php:70
16
+ msgid "Options saved. If you changes any of the bypasses empty the cache."
17
+ msgstr ""
18
+
19
+ #: options.php:83
20
+ msgid "The cache folder has been cleaned."
21
+ msgstr ""
22
+
23
+ #: options.php:130
24
+ msgid "Cache size"
25
+ msgstr ""
26
+
27
+ #: options.php:222
28
+ msgid "You must save the options since some files must be updated."
29
+ msgstr ""
30
+
31
+ #: options.php:231
32
+ msgid "Hyper Cache was not able to create or find the %s folder."
33
+ msgstr ""
34
+
35
+ #: options.php:233
36
+ msgid ""
37
+ "Please create it manually with list, write and read permissions (usually "
38
+ "777)."
39
+ msgstr ""
40
+
41
+ #: options.php:244
42
+ msgid "You should choose a different permalink structure."
43
+ msgstr ""
44
+
45
+ #: options.php:245
46
+ msgid ""
47
+ "Change it on the <a href=\"options-permalink.php\" target=\"_blank"
48
+ "\">permalink panel</a> otherwise Hyper Cache cannot work properly."
49
+ msgstr ""
50
+
51
+ #: options.php:270
52
+ msgid "Clean the whole cache"
53
+ msgstr ""
54
+
55
+ #: options.php:271
56
+ msgid "Clean home and archives"
57
+ msgstr ""
58
+
59
+ #: options.php:272
60
+ msgid "Compute the cache size"
61
+ msgstr ""
62
+
63
+ #: options.php:273
64
+ msgid "Import old options"
65
+ msgstr ""
66
+
67
+ #: options.php:278
68
+ msgid "General"
69
+ msgstr ""
70
+
71
+ #: options.php:279
72
+ msgid "Bypasses"
73
+ msgstr ""
74
+
75
+ #: options.php:280
76
+ msgid "Mobile"
77
+ msgstr ""
78
+
79
+ #: options.php:298
80
+ msgid "Cached pages will be valid for"
81
+ msgstr ""
82
+
83
+ #: options.php:301
84
+ msgid "0 means forever."
85
+ msgstr ""
86
+
87
+ #: options.php:305
88
+ msgid "Enable compression"
89
+ msgstr ""
90
+
91
+ #: options.php:310
92
+ msgid ""
93
+ "If you note odd characters when enabled, disable it since your server is "
94
+ "already\r\n"
95
+ " compressing the pages."
96
+ msgstr ""
97
+
98
+ #: options.php:320
99
+ msgid "The number of latest posts to invalidate when the home is invalidated."
100
+ msgstr ""
101
+
102
+ #: options.php:326
103
+ msgid "Cache folder"
104
+ msgstr ""
105
+
106
+ #: options.php:337
107
+ msgid "Next autoclean will run in"
108
+ msgstr ""
109
+
110
+ #: options.php:341
111
+ msgid "The autoclean process removes old files to save disk space."
112
+ msgstr ""
113
+
114
+ #: options.php:346
115
+ msgid "Allow browser caching"
116
+ msgstr ""
117
+
118
+ #: options.php:362
119
+ msgid "Remove HTTP/HTTPS"
120
+ msgstr ""
121
+
122
+ #: options.php:374
123
+ msgid "HTTPS"
124
+ msgstr ""
125
+
126
+ #: options.php:376 options.php:515
127
+ msgid "Bypass the cache"
128
+ msgstr ""
129
+
130
+ #: options.php:377 options.php:514
131
+ msgid "Cache separately"
132
+ msgstr ""
133
+
134
+ #: options.php:378
135
+ msgid "Use the standard cache (I have HTTP/HTTPS aware pages)"
136
+ msgstr ""
137
+
138
+ #: options.php:391
139
+ msgid "Do not cache the home page"
140
+ msgstr ""
141
+
142
+ #: options.php:395
143
+ msgid "When active, the home page and its subpages are not cached."
144
+ msgstr ""
145
+
146
+ #: options.php:396
147
+ msgid "Works even with a static home page."
148
+ msgstr ""
149
+
150
+ #: options.php:401
151
+ msgid "Do not cache the \"404 - Not found\" page"
152
+ msgstr ""
153
+
154
+ #: options.php:405
155
+ msgid ""
156
+ "When active, Hyper Cache does not serve a cached \"404 not found\" page."
157
+ msgstr ""
158
+
159
+ #: options.php:406
160
+ msgid ""
161
+ "Requests which lead to a 404 not found page overload you blog since "
162
+ "WordPress must generate a full page"
163
+ msgstr ""
164
+
165
+ #: options.php:407
166
+ msgid "Caching it help in reduce that overload."
167
+ msgstr ""
168
+
169
+ #: options.php:412
170
+ msgid "Do not cache the blog main feeds"
171
+ msgstr ""
172
+
173
+ #: options.php:416
174
+ msgid "When active, the main blog feed %s is not cached."
175
+ msgstr ""
176
+
177
+ #: options.php:422
178
+ msgid "Do not cache single post comment feed"
179
+ msgstr ""
180
+
181
+ #: options.php:426
182
+ msgid "When active, the single post comment feeds are not cached."
183
+ msgstr ""
184
+
185
+ #: options.php:427
186
+ msgid ""
187
+ "Usually I enable this bypass since it saves disk space and comment feed on "
188
+ "single posts are not usually used."
189
+ msgstr ""
190
+
191
+ #: options.php:432
192
+ msgid "Exact URIs to bypass"
193
+ msgstr ""
194
+
195
+ #: options.php:434 options.php:447 options.php:461 options.php:472
196
+ #: options.php:484
197
+ msgid "Enable"
198
+ msgstr ""
199
+
200
+ #: options.php:437 options.php:450 options.php:464 options.php:475
201
+ #: options.php:545
202
+ msgid "One per line."
203
+ msgstr ""
204
+
205
+ #: options.php:438
206
+ msgid "Those URIs are exactly matched."
207
+ msgstr ""
208
+
209
+ #: options.php:439 options.php:452
210
+ msgid ""
211
+ "For example if you add the <code>/my-single-post</code> URI and a request is "
212
+ "received for <code>http://youblog.com<strong>/my-single-post</strong></code> "
213
+ "that page IS NOT cached."
214
+ msgstr ""
215
+
216
+ #: options.php:440
217
+ msgid ""
218
+ "A request for <code>http://youblog.com<strong>/my-single-post-something</"
219
+ "strong></code> IS cached."
220
+ msgstr ""
221
+
222
+ #: options.php:445
223
+ msgid "(Starting with) URIs to bypass"
224
+ msgstr ""
225
+
226
+ #: options.php:451
227
+ msgid "Those URIs match if a requested URI starts with one of them."
228
+ msgstr ""
229
+
230
+ #: options.php:454
231
+ msgid ""
232
+ "A request for <code>http://youblog.com<strong>/my-single-post-something</"
233
+ "strong></code> IS NOT cached as well."
234
+ msgstr ""
235
+
236
+ #: options.php:459
237
+ msgid "Cookies to bypass"
238
+ msgstr ""
239
+
240
+ #: options.php:465
241
+ msgid ""
242
+ "If the visitor has a cookie named as one of the listed values, the cache is "
243
+ "bypassed."
244
+ msgstr ""
245
+
246
+ #: options.php:470
247
+ msgid "Devices (user agents) to bypass"
248
+ msgstr ""
249
+
250
+ #: options.php:476
251
+ msgid ""
252
+ "If the visitor has a device with a user agent named as one of the listed "
253
+ "values, the cache is bypassed."
254
+ msgstr ""
255
+
256
+ #: options.php:482
257
+ msgid "Don't serve cached pages to comment authors"
258
+ msgstr ""
259
+
260
+ #: options.php:487
261
+ msgid ""
262
+ "Hyper Cache is able to work with users who left a comment and completes the "
263
+ "comment form with\r\n"
264
+ " user data even on cached page"
265
+ msgstr ""
266
+
267
+ #: options.php:489
268
+ msgid "(with a small JavaScript added at the end of the pages)."
269
+ msgstr ""
270
+
271
+ #: options.php:490
272
+ msgid "But the \"awaiting moderation\" message cannot be shown."
273
+ msgstr ""
274
+
275
+ #: options.php:491
276
+ msgid ""
277
+ "If you have few readers who comment you can disable this feature to get back "
278
+ "the classical WordPress comment flow."
279
+ msgstr ""
280
+
281
+ #: options.php:496
282
+ msgid "Reject posts older than"
283
+ msgstr ""
284
+
285
+ #: options.php:500
286
+ msgid ""
287
+ "Older posts won't be cached and stored resulting in a lower disk space usage."
288
+ msgstr ""
289
+
290
+ #: options.php:501
291
+ msgid "Useful when older posts have low traffic."
292
+ msgstr ""
293
+
294
+ #: options.php:511
295
+ msgid "Working mode"
296
+ msgstr ""
297
+
298
+ #: options.php:513
299
+ msgid "Use the standard cache"
300
+ msgstr ""
301
+
302
+ #: options.php:518
303
+ msgid ""
304
+ "Choose \"cache separately\" if you produce different content for mobile "
305
+ "devices"
306
+ msgstr ""
307
+
308
+ #: options.php:519
309
+ msgid ""
310
+ "See for example my <a href=\"http://www.satollo.net/plugins/header-footer\" "
311
+ "target=\"_blank\">Header and Footer</a> plugin for different desktop/mobile "
312
+ "ads injection in posts."
313
+ msgstr ""
314
+
315
+ #: options.php:524
316
+ msgid "Mobile theme"
317
+ msgstr ""
318
+
319
+ #: options.php:535
320
+ msgid ""
321
+ "If you have plugins which produce different content for desktop and mobile "
322
+ "devices, you should use a separate cache for mobile."
323
+ msgstr ""
324
+
325
+ #: options.php:540
326
+ msgid "Mobile user agents"
327
+ msgstr ""
328
+
329
+ #: options.php:546
330
+ msgid ""
331
+ "A \"user agent\" is a text which identify the kind of device used to surf "
332
+ "the site."
333
+ msgstr ""
334
+
335
+ #: options.php:547
336
+ msgid "For example and iPhone has <code>iphone</code> as user agent."
337
+ msgstr ""
338
+
339
+ #: options.php:557
340
+ msgid "Save"
341
+ msgstr ""
options.php CHANGED
@@ -1,525 +1,774 @@
1
  <?php
 
 
2
 
3
- $options = get_option('hyper');
4
-
5
- if (!isset($options['notranslation']))
6
- {
7
- $plugin_dir = basename(dirname(__FILE__));
8
- load_plugin_textdomain('hyper-cache', 'wp-content/plugins/' . $plugin_dir, $plugin_dir);
9
  }
10
 
 
 
11
 
12
- if (isset($_POST['clean']))
13
- {
14
- hyper_delete_path(WP_CONTENT_DIR . '/cache/hyper-cache');
15
- }
 
 
 
16
 
17
- $error = false;
18
- if (isset($_POST['save']))
19
- {
20
- if (!check_admin_referer()) die('No hacking please');
21
-
22
- $tmp = stripslashes_deep($_POST['options']);
23
 
24
- if ($options['gzip'] != $tmp['gzip'])
25
- {
26
- hyper_delete_path(WP_CONTENT_DIR . '/cache/hyper-cache');
27
  }
28
 
29
- $options = $tmp;
30
-
31
- if (!is_numeric($options['timeout'])) $options['timeout'] = 60;
32
- $options['timeout'] = (int)$options['timeout'];
33
 
34
- if (!is_numeric($options['clean_interval'])) $options['clean_interval'] = 60;
35
- $options['clean_interval'] = (int)$options['clean_interval'];
 
 
 
 
 
 
 
 
 
 
 
36
 
37
- $buffer = hyper_generate_config($options);
38
-
39
- $file = @fopen(WP_CONTENT_DIR . '/advanced-cache.php', 'w');
40
- if ($file) {
41
- @fwrite($file, $buffer);
42
- @fclose($file);
 
43
  }
44
- else {
45
- $error = true;
 
 
 
 
 
 
46
  }
47
- update_option('hyper', $options);
48
 
49
- // When the cache does not expire
50
- if ($options['expire_type'] == 'none')
51
- {
52
- @unlink(WP_CONTENT_DIR . '/cache/hyper-cache/_global.dat');
53
- @unlink(WP_CONTENT_DIR . '/cache/hyper-cache/_archives.dat');
 
 
54
  }
55
- }
56
- else
57
- {
58
- if ($options['mobile_agents'] == '')
59
- {
60
- $options['mobile_agents'] = "elaine/3.0\niphone\nipod\npalm\neudoraweb\nblazer\navantgo\nwindows ce\ncellphone\nsmall\nmmef20\ndanger\nhiptop\nproxinet\nnewt\npalmos\nnetfront\nsharp-tq-gx10\nsonyericsson\nsymbianos\nup.browser\nup.link\nts21i-10\nmot-v\nportalmmm\ndocomo\nopera mini\npalm\nhandspring\nnokia\nkyocera\nsamsung\nmotorola\nmot\nsmartphone\nblackberry\nwap\nplaystation portable\nlg\nmmp\nopwv\nsymbian\nepoc";
 
 
 
 
61
  }
62
  }
63
 
 
 
 
 
 
64
 
65
- ?>
66
- <style>
67
- /* Admin header */
68
- #satollo-header {
69
- text-align: left;
70
- background-color: #f4f4f4;
71
- padding: 5px;
72
- padding-left: 15px;
73
- border-radius: 3px;
74
- text-transform: uppercase;
75
  }
76
 
77
- #satollo-header a {
78
- margin-right: 15px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
79
  }
80
 
81
- .hints {
82
- border: 1px solid #aaf;
83
- background-color: #fafaff;
84
- padding: 5px;
85
- margin-top: 10px;
86
- border-bottom-left-radius: 4px 4px;
87
- border-bottom-right-radius: 4px 4px;
88
- border-top-left-radius: 4px 4px;
89
- border-top-right-radius: 4px 4px;
90
  }
91
- .form-table {
92
- background-color: #fff;
93
- border: 3px solid #ddd;
 
94
  }
95
 
96
- .form-table th {
97
- text-align: right;
98
- font-weight: bold;
99
  }
100
- </style>
101
 
102
- <div class="wrap">
103
-
104
- <div id="satollo-header">
105
- <a href="http://www.satollo.net/plugins/hyper-cache" target="_blank">Get Help</a>
106
- <a href="http://www.satollo.net/forums" target="_blank">Forum</a>
107
-
108
- <form style="display: inline; margin: 0;" action="http://www.satollo.net/wp-content/plugins/newsletter/do/subscribe.php" method="post" target="_blank">
109
- Subscribe to satollo.net <input type="email" name="ne" required placeholder="Your email">
110
- <input type="hidden" name="nr" value="hyper-cache">
111
- <input type="submit" value="Go">
112
- </form>
113
 
114
- <a href="https://www.facebook.com/satollo.net" target="_blank"><img style="vertical-align: bottom" src="http://www.satollo.net/images/facebook.png"></a>
 
 
115
 
116
- <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=RJB428Z5KJPR4" target="_blank"><img style="vertical-align: bottom" src="http://www.satollo.net/images/donate.png"></a>
117
- <a href="http://www.satollo.net/donations" target="_blank">Even <b>1$</b> helps: read more</a>
118
- </div>
119
 
120
- <?php if (!defined('WP_CACHE') || !WP_CACHE) { ?>
121
- <div class="error">
122
- <?php _e('You must add to the file wp-config.php (at its beginning after the &lt;?php) the line of code: <code>define(\'WP_CACHE\', true);</code>.', 'hyper-cache'); ?>
123
- </div>
124
- <?php } ?>
125
-
126
- <h2>Hyper Cache</h2>
127
 
128
- <h3>Contributors</h3>
 
 
 
 
129
 
130
- <p>
131
- <strong>Florian Höch</strong> (<a href="http://hoech.net" target="_blank">hoech.net</a>) for new features on version 2.9+.
132
- <strong>Quentin</strong> (<a href="http://www.tradpress.fr" target="_blank">TradPress</a>) for French translation.
133
- <strong>Mckryak</strong> for Russian translation. Tommy Tung alias Ragnarok for Chineese and Twaineese translations. And many others to be added.
134
- </p>
135
 
136
- <?php
137
- if ($error)
138
- {
139
- echo __('<p><strong>Options saved BUT not active because Hyper Cache was not able to update the file wp-content/advanced-cache.php (is it writable?).</strong></p>', 'hyper-cache');
140
  }
141
- ?>
142
- <?php
143
- if (!wp_mkdir_p(WP_CONTENT_DIR . '/cache/hyper-cache'))
144
- {
145
- echo __('<p><strong>Hyper Cache was not able to create the folder "wp-content/cache/hyper-cache". Make it manually setting permissions to 777.</strong></p>', 'hyper-cache');
 
 
 
 
 
 
 
146
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
147
  ?>
 
 
 
 
 
 
 
 
 
 
 
 
148
 
149
- <p>
150
- <?php printf(__('You can find more details about configurations and working mode on <a href="%s">Hyper Cache official page</a>.', 'hyper-cache'), 'http://www.satollo.net/plugins/hyper-cache'); ?>
151
- </p>
152
-
153
-
154
-
155
- <form method="post" action="">
156
- <?php wp_nonce_field(); ?>
157
-
158
- <p class="submit">
159
- <input class="button" type="submit" name="clean" value="<?php _e('Clear cache', 'hyper-cache'); ?>">
160
- </p>
161
-
162
- <h3><?php _e('Cache status', 'hyper-cache'); ?></h3>
163
- <table class="form-table">
164
- <tr valign="top">
165
- <th><?php _e('Files in cache (valid and expired)', 'hyper-cache'); ?></th>
166
- <td><?php echo hyper_count(); ?></td>
167
- </tr>
168
- <tr valign="top">
169
- <th><?php _e('Cleaning process', 'hyper-cache'); ?></th>
170
- <td>
171
- <?php _e('Next run on: ', 'hyper-cache'); ?>
172
- <?php
173
- $next_scheduled = wp_next_scheduled('hyper_clean');
174
- if (empty($next_scheduled)) echo '? (read below)';
175
- else echo gmdate(get_option('date_format') . ' ' . get_option('time_format'), $next_scheduled + get_option('gmt_offset')*3600);
176
- ?>
177
- <div class="hints">
178
- <?php _e('The cleaning process runs hourly and it\'s ok to run it hourly: that grant you an efficient cache. If above there is not a valid next run time, wait 10 seconds and reenter this panel. If nothing change, try to deactivate and reactivate Hyper Cache.', 'hyper-cache'); ?>
179
- </div>
180
- </td>
181
- </tr>
182
- </table>
183
-
184
-
185
- <h3><?php _e('Configuration', 'hyper-cache'); ?></h3>
186
-
187
- <table class="form-table">
188
-
189
- <tr valign="top">
190
- <th><?php _e('Cached pages timeout', 'hyper-cache'); ?></th>
191
- <td>
192
- <input type="text" size="5" name="options[timeout]" value="<?php echo htmlspecialchars($options['timeout']); ?>"/>
193
- (<?php _e('minutes', 'hyper-cache'); ?>)
194
- <div class="hints">
195
- <?php _e('Minutes a cached page is valid and served to users. A zero value means a cached page is
196
- valid forever.', 'hyper-cache'); ?>
197
- <?php _e('If a cached page is older than specified value (expired) it is no more used and
198
- will be regenerated on next request of it.', 'hyper-cache'); ?>
199
- <?php _e('720 minutes is half a day, 1440 is a full day and so on.', 'hyper-cache'); ?>
200
- </div>
201
- </td>
202
- </tr>
203
-
204
- <tr valign="top">
205
- <th><?php _e('Cache invalidation mode', 'hyper-cache'); ?></th>
206
- <td>
207
- <select name="options[expire_type]">
208
- <option value="all" <?php echo ($options['expire_type'] == 'all')?'selected':''; ?>><?php _e('All cached pages', 'hyper-cache'); ?></option>
209
- <option value="post" <?php echo ($options['expire_type'] == 'post')?'selected':''; ?>><?php _e('Only modified posts', 'hyper-cache'); ?></option>
210
- <!--<option value="post_strictly" <?php echo ($options['expire_type'] == 'post_strictly')?'selected':''; ?>><?php _e('Only modified pages', 'hyper-cache'); ?></option>-->
211
- <option value="none" <?php echo ($options['expire_type'] == 'none')?'selected':''; ?>><?php _e('Nothing', 'hyper-cache'); ?></option>
212
- </select>
213
- <br />
214
- <input type="checkbox" name="options[archive]" value="1" <?php echo $options['archive']?'checked':''; ?>/>
215
- <?php _e('Invalidate home, archives, categories on single post invalidation', 'hyper-cache'); ?>
216
- <br />
217
- <div class="hints">
218
- <?php _e('"Invalidation" is the process of deleting cached pages when they are no more valid.', 'hyper-cache'); ?>
219
- <?php _e('Invalidation process is started when blog contents are modified (new post, post update, new comment,...) so
220
- one or more cached pages need to be refreshed to get that new content.', 'hyper-cache'); ?>
221
- <?php _e('A new comment submission or a comment moderation is considered like a post modification
222
- where the post is the one the comment is relative to.', 'hyper-cache'); ?>
223
- </div>
224
- </td>
225
- </tr>
226
-
227
- <tr valign="top">
228
- <th><?php _e('Disable cache for commenters', 'hyper-cache'); ?></th>
229
- <td>
230
- <input type="checkbox" name="options[comment]" value="1" <?php echo isset($options['comment'])?'checked':''; ?>/>
231
- <div class="hints">
232
- <?php _e('When users leave comments, WordPress show pages with their comments even if in moderation
233
- (and not visible to others) and pre-fills the comment form.', 'hyper-cache'); ?>
234
- <?php _e('If you want to keep those features, enable this option.', 'hyper-cache'); ?>
235
- <?php _e('The caching system will be less efficient but the blog more usable.', 'hyper-cache'); ?>
236
- </div>
237
 
238
- </td>
239
- </tr>
240
-
241
- <tr valign="top">
242
- <th><?php _e('Feeds caching', 'hyper-cache'); ?></th>
243
- <td>
244
- <input type="checkbox" name="options[feed]" value="1" <?php echo isset($options['feed'])?'checked':''; ?>/>
245
- <div class="hints">
246
- <?php _e('When enabled the blog feeds will be cache as well.', 'hyper-cache'); ?>
247
- <?php _e('Usually this options has to be left unchecked but if your blog is rather static,
248
- you can enable it and have a bit more efficiency', 'hyper-cache'); ?>
249
  </div>
250
- </td>
251
- </tr>
252
-
253
- <tr valign="top">
254
- <th><?php _e('Allow browser caching', 'hyper-cache'); ?></th>
255
- <td>
256
- <input type="checkbox" name="options[browsercache]" value="1" <?php echo isset($options['browsercache'])?'checked':''; ?>/>
257
- <div class="hints">
258
- <?php _e('Allow browser caching.','hyper-cache'); ?>
259
- </div>
260
- </td>
261
- </tr>
262
- </table>
263
- <p class="submit">
264
- <input class="button" type="submit" name="save" value="<?php _e('Update'); ?>">
265
- </p>
266
-
267
- <h3><?php _e('Configuration for mobile devices', 'hyper-cache'); ?></h3>
268
- <table class="form-table">
269
- <tr valign="top">
270
- <th><?php _e('WordPress Mobile Pack', 'hyper-cache'); ?></th>
271
- <td>
272
- <input type="checkbox" name="options[plugin_mobile_pack]" value="1" <?php echo isset($options['plugin_mobile_pack'])?'checked':''; ?>/>
273
- <div class="hints">
274
- <?php _e('Enbale integration with <a href="http://wordpress.org/extend/plugins/wordpress-mobile-pack/">WordPress Mobile Pack</a> plugin. If you have that plugin, Hyper Cache use it to detect mobile devices and caches saparately
275
- the different pages generated.', 'hyper-cache'); ?>
276
- </div>
277
- </td>
278
- </tr>
279
- <tr valign="top">
280
- <th><?php _e('Detect mobile devices', 'hyper-cache'); ?></th>
281
- <td>
282
- <input type="checkbox" name="options[mobile]" value="1" <?php echo isset($options['mobile'])?'checked':''; ?>/>
283
- <div class="hints">
284
- <?php _e('When enabled mobile devices will be detected and the cached page stored under different name.', 'hyper-cache'); ?>
285
- <?php _e('This makes blogs with different themes for mobile devices to work correctly.', 'hyper-cache'); ?>
286
- </div>
287
- </td>
288
- </tr>
289
-
290
- <tr valign="top">
291
- <th><?php _e('Mobile agent list', 'hyper-cache'); ?></th>
292
- <td>
293
- <textarea wrap="off" rows="4" cols="70" name="options[mobile_agents]"><?php echo htmlspecialchars($options['mobile_agents']); ?></textarea>
294
- <div class="hints">
295
- <?php _e('One per line mobile agents to check for when a page is requested.', 'hyper-cache'); ?>
296
- <?php _e('The mobile agent string is matched against the agent a device is sending to the server.', 'hyper-cache'); ?>
297
- </div>
298
- </td>
299
- </tr>
300
- </table>
301
- <p class="submit">
302
- <input class="button" type="submit" name="save" value="<?php _e('Update'); ?>">
303
- </p>
304
-
305
-
306
- <h3><?php _e('Compression', 'hyper-cache'); ?></h3>
307
-
308
- <?php if (!function_exists('gzencode') || !function_exists('gzinflate')) { ?>
309
-
310
- <p><?php _e('Your hosting space has not the "gzencode" or "gzinflate" function, so no compression options are available.', 'hyper-cache'); ?></p>
311
-
312
- <?php } else { ?>
313
-
314
- <table class="form-table">
315
- <tr valign="top">
316
- <th><?php _e('Store compressed pages', 'hyper-cache'); ?></th>
317
- <td>
318
- <input type="checkbox" name="options[store_compressed]" value="1" <?php echo $options['store_compressed']?'checked':''; ?>
319
- onchange="jQuery('input[name=&quot;options[gzip]&quot;]').attr('disabled', !this.checked)" />
320
- <div class="hints">
321
- <?php _e('Enable this option to minimize disk space usage and make sending of compressed pages possible with the option below.', 'hyper-cache'); ?>
322
- <?php _e('The cache will be a little less performant.', 'hyper-cache'); ?>
323
- <?php _e('Leave the options disabled if you note malfunctions, like blank pages.', 'hyper-cache'); ?>
324
- <br />
325
- <?php _e('If you enable this option, the option below will be available as well.', 'hyper-cache'); ?>
326
- </div>
327
- </td>
328
- </tr>
329
-
330
- <tr valign="top">
331
- <th><?php _e('Send compressed pages', 'hyper-cache'); ?></th>
332
- <td>
333
- <input type="checkbox" name="options[gzip]" value="1" <?php echo $options['gzip']?'checked':''; ?>
334
- <?php echo $options['store_compressed']?'':'disabled'; ?> />
335
- <div class="hints">
336
- <?php _e('When possible (i.e. if the browser accepts compression and the page was cached compressed) the page will be sent compressed to save bandwidth.', 'hyper-cache'); ?>
337
- <?php _e('Only the textual part of a page can be compressed, not images, so a photo
338
- blog will consume a lot of bandwidth even with compression enabled.', 'hyper-cache'); ?>
339
- <?php _e('Leave the options disabled if you note malfunctions, like blank pages.', 'hyper-cache'); ?>
340
- <br />
341
- <?php _e('If you enable this option, the option below will be available as well.', 'hyper-cache'); ?>
342
- </div>
343
- </td>
344
- </tr>
345
-
346
- <tr valign="top">
347
- <th><?php _e('On-the-fly compression', 'hyper-cache'); ?></th>
348
- <td>
349
- <input type="checkbox" name="options[gzip_on_the_fly]" value="1" <?php echo $options['gzip_on_the_fly']?'checked':''; ?> />
350
- <div class="hints">
351
- <?php _e('When possible (i.e. if the browser accepts compression) use on-the-fly compression to save bandwidth when sending pages which are not compressed.', 'hyper-cache'); ?>
352
- <?php _e('Serving of such pages will be a little less performant.', 'hyper-cache'); ?>
353
- <?php _e('Leave the options disabled if you note malfunctions, like blank pages.', 'hyper-cache'); ?>
354
- </div>
355
- </td>
356
- </tr>
357
- </table>
358
- <p class="submit">
359
- <input class="button" type="submit" name="save" value="<?php _e('Update'); ?>">
360
- </p>
361
- <?php } ?>
362
-
363
-
364
- <h3><?php _e('Advanced options', 'hyper-cache'); ?></h3>
365
-
366
- <table class="form-table">
367
- <tr valign="top">
368
- <th><?php _e('Translation', 'hyper-cache'); ?></th>
369
- <td>
370
- <input type="checkbox" name="options[notranslation]" value="1" <?php echo $options['notranslation']?'checked':''; ?>/>
371
- <div class="hints">
372
- <?php _e('DO NOT show this panel translated.', 'hyper-cache'); ?>
373
- </div>
374
- </td>
375
- </tr>
376
-
377
- <tr valign="top">
378
- <th><?php _e('Disable Last-Modified header', 'hyper-cache'); ?></th>
379
- <td>
380
- <input type="checkbox" name="options[lastmodified]" value="1" <?php echo $options['lastmodified']?'checked':''; ?>/>
381
- <div class="hints">
382
- <?php _e('Disable some HTTP headers (Last-Modified) which improve performances but some one is reporting they create problems which some hosting configurations.','hyper-cache'); ?>
383
- </div>
384
- </td>
385
- </tr>
386
-
387
- <tr valign="top">
388
- <th><?php _e('Home caching', 'hyper-cache'); ?></th>
389
- <td>
390
- <input type="checkbox" name="options[home]" value="1" <?php echo $options['home']?'checked':''; ?>/>
391
- <div class="hints">
392
- <?php _e('DO NOT cache the home page so it is always fresh.','hyper-cache'); ?>
393
- </div>
394
- </td>
395
- </tr>
396
-
397
- <tr valign="top">
398
- <th><?php _e('Redirect caching', 'hyper-cache'); ?></th>
399
- <td>
400
- <input type="checkbox" name="options[redirects]" value="1" <?php echo $options['redirects']?'checked':''; ?>/>
401
- <br />
402
- <?php _e('Cache WordPress redirects.', 'hyper-cache'); ?>
403
- <?php _e('WordPress sometime sends back redirects that can be cached to avoid further processing time.', 'hyper-cache'); ?>
404
- </td>
405
- </tr>
406
-
407
- <tr valign="top">
408
- <th><?php _e('Page not found caching (HTTP 404)', 'hyper-cache'); ?></th>
409
- <td>
410
- <input type="checkbox" name="options[notfound]" value="1" <?php echo $options['notfound']?'checked':''; ?>/>
411
- </td>
412
- </tr>
413
-
414
- <tr valign="top">
415
- <th><?php _e('Strip query string', 'hyper-cache'); ?></th>
416
- <td>
417
- <input type="checkbox" name="options[strip_qs]" value="1" <?php echo $options['strip_qs']?'checked':''; ?>/>
418
- <div class="hints">
419
- <?php _e('This is a really special case, usually you have to kept it disabled. When enabled, URL with query string will be
420
- reduced removing the query string. So the URL http://www.domain.com/post-title and
421
- http://www.domain.com/post-title?a=b&amp;c=d are cached as a single page.<br />
422
- Setting this option disable the next one.', 'hyper-cache'); ?>
423
- <br />
424
- <?php _e('<strong>Many plugins can stop to work correctly with this option enabled
425
- (eg. my <a href="http://www.satollo.net/plugins/newsletter">Newsletter plugin</a>)</strong>', 'hyper-cache'); ?>
426
- </div>
427
- </td>
428
- </tr>
429
-
430
- <tr valign="top">
431
- <th><?php _e('URL with parameters', 'hyper-cache'); ?></th>
432
- <td>
433
- <input type="checkbox" name="options[cache_qs]" value="1" <?php echo $options['cache_qs']?'checked':''; ?>/>
434
- <div class="hints">
435
- <?php _e('Cache requests with query string (parameters).', 'hyper-cache'); ?>
436
- <?php _e('This option has to be enabled for blogs which have post URLs with a question mark on them.', 'hyper-cache'); ?>
437
- <?php _e('This option is disabled by default because there is plugins which use
438
- URL parameter to perform specific action that cannot be cached', 'hyper-cache'); ?>
439
- <?php _e('For who is using search engines friendly permalink format is safe to
440
- leave this option disabled, no performances will be lost.', 'hyper-cache'); ?>
441
- </div>
442
- </td>
443
- </tr>
444
-
445
- <tr valign="top">
446
- <th><?php _e('Allow browser to bypass cache', 'hyper-cache'); ?></th>
447
- <td>
448
- <input type="checkbox" name="options[nocache]" value="1" <?php echo $options['nocache']?'checked':''; ?>/>
449
- <div class="hints">
450
- <?php _e('Do not use cache if browser sends no-cache header (e.g. on explicit page reload).','hyper-cache'); ?>
451
  </div>
452
- </td>
453
- </tr>
454
- </table>
455
-
456
-
457
- <h3><?php _e('Filters', 'hyper-cache'); ?></h3>
458
- <p>
459
- <?php _e('Here you can: exclude pages and posts from the cache, specifying their address (URI); disable Hyper Cache for specific
460
- User Agents (browsers, bot, mobile devices, ...); disable the cache for users that have specific cookies.', 'hyper-cache'); ?>
461
- </p>
462
-
463
- <table class="form-table">
464
- <tr valign="top">
465
- <th><?php _e('URI to reject', 'hyper-cache'); ?></th>
466
- <td>
467
- <textarea wrap="off" rows="5" cols="70" name="options[reject]"><?php echo htmlspecialchars($options['reject']); ?></textarea>
468
- <div class="hints">
469
- <?php _e('Write one URI per line, each URI has to start with a slash.', 'hyper-cache'); ?>
470
- <?php _e('A specified URI will match the requested URI if the latter starts with the former.', 'hyper-cache'); ?>
471
- <?php _e('If you want to specify a stric matching, surround the URI with double quotes.', 'hyper-cache'); ?>
472
-
473
- <?php
474
- $languages = get_option('gltr_preferred_languages');
475
- if (is_array($languages))
476
- {
477
- echo '<br />';
478
- $home = get_option('home');
479
- $x = strpos($home, '/', 8); // skips http://
480
- $base = '';
481
- if ($x !== false) $base = substr($home, $x);
482
- echo 'It seems you have Global Translator installed. The URI prefixes below can be added to avoid double caching of translated pages:<br />';
483
- foreach($languages as $l) echo $base . '/' . $l . '/ ';
484
- }
485
- ?>
486
  </div>
487
- </td>
488
- </tr>
489
-
490
- <tr valign="top">
491
- <th><?php _e('Agents to reject', 'hyper-cache'); ?></th>
492
- <td>
493
- <textarea wrap="off" rows="5" cols="70" name="options[reject_agents]"><?php echo htmlspecialchars($options['reject_agents']); ?></textarea>
494
- <div class="hints">
495
- <?php _e('Write one agent per line.', 'hyper-cache'); ?>
496
- <?php _e('A specified agent will match the client agent if the latter contains the former. The matching is case insensitive.', 'hyper-cache'); ?>
497
  </div>
498
- </td>
499
- </tr>
500
-
501
- <tr valign="top">
502
- <th><?php _e('Cookies matching', 'hyper-cache'); ?></th>
503
- <td>
504
- <textarea wrap="off" rows="5" cols="70" name="options[reject_cookies]"><?php echo htmlspecialchars($options['reject_cookies']); ?></textarea>
505
- <div class="hints">
506
- <?php _e('Write one cookie name per line.', 'hyper-cache'); ?>
507
- <?php _e('When a specified cookie will match one of the cookie names sent bby the client the cache stops.', 'hyper-cache'); ?>
508
- <?php if (defined('FBC_APP_KEY_OPTION')) { ?>
509
- <br />
510
- <?php _e('It seems you have Facebook Connect plugin installed. Add this cookie name to make it works
511
- with Hyper Cache:', 'hyper-cache'); ?>
512
- <br />
513
- <strong><?php echo get_option(FBC_APP_KEY_OPTION); ?>_user</strong>
514
- <?php } ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
515
  </div>
516
- </td>
517
- </tr>
518
 
519
- </table>
 
 
 
 
520
 
521
- <p class="submit">
522
- <input class="button" type="submit" name="save" value="<?php _e('Update'); ?>">
523
- </p>
524
- </form>
525
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
+ $controls = new HyperCacheControls();
3
+ $plugin = HyperCache::$instance;
4
 
5
+ if (!isset($plugin->options['translation_disabled'])) {
6
+ if (function_exists('load_plugin_textdomain')) {
7
+ load_plugin_textdomain('hyper-cache', false, 'hyper-cache/languages');
8
+ }
 
 
9
  }
10
 
11
+ if ($controls->is_action('save')) {
12
+ $controls->options = stripslashes_deep($_POST['options']);
13
 
14
+ $controls->options['cdn_url'] = strtolower(trim($controls->options['cdn_url']));
15
+ $controls->options['cdn_url'] = rtrim($controls->options['cdn_url'], '/');
16
+ if (!empty($controls->options['cdn_url'])) {
17
+ if (strpos($controls->options['cdn_url'], 'http') !== 0) {
18
+ $controls->options['cdn_url'] = 'http://' . $controls->options['cdn_url'];
19
+ }
20
+ }
21
 
22
+ $controls->options['folder'] = trim($controls->options['folder']);
23
+ if (!empty($controls->options['folder']))
24
+ $controls->options['folder'] = untrailingslashit($controls->options['folder']);
 
 
 
25
 
26
+ if (!is_numeric($controls->options['max_age'])) {
27
+ $controls->options['max_age'] = 24;
 
28
  }
29
 
30
+ if (!is_numeric($controls->options['browser_cache_hours'])) {
31
+ $controls->options['browser_cache_hours'] = 0;
32
+ }
 
33
 
34
+ // Mobile Agents
35
+ $controls->options['mobile_agents'] = strtolower(trim($controls->options['mobile_agents']));
36
+ $controls->options['mobile_agents'] = $plugin->text_to_list($controls->options['mobile_agents']);
37
+
38
+ // Rejected Agents
39
+ $controls->options['reject_agents'] = strtolower(trim($controls->options['reject_agents']));
40
+ if (empty($controls->options['reject_agents'])) {
41
+ unset($controls->options['reject_agents_enabled']);
42
+ $controls->options['reject_agents'] = array();
43
+ } else {
44
+ $controls->options['reject_agents'] = str_replace('#', ' ', $controls->options['reject_agents']);
45
+ $controls->options['reject_agents'] = $plugin->text_to_list($controls->options['reject_agents']);
46
+ }
47
 
48
+ $controls->options['reject_cookies'] = strtolower(trim($controls->options['reject_cookies']));
49
+ if (empty($controls->options['reject_cookies'])) {
50
+ unset($controls->options['reject_cookies_enabled']);
51
+ $controls->options['reject_cookies'] = array();
52
+ } else {
53
+ $controls->options['reject_cookies'] = str_replace('#', ' ', $controls->options['reject_cookies']);
54
+ $controls->options['reject_cookies'] = $plugin->text_to_list($controls->options['reject_cookies']);
55
  }
56
+ // Rejected URIs
57
+ $controls->options['reject_uris'] = strtolower(trim($controls->options['reject_uris']));
58
+ if (empty($controls->options['reject_uris'])) {
59
+ unset($controls->options['reject_uris_enabled']);
60
+ $controls->options['reject_uris'] = array();
61
+ } else {
62
+ $controls->options['reject_uris'] = str_replace('#', ' ', $controls->options['reject_uris']);
63
+ $controls->options['reject_uris'] = $plugin->text_to_list($controls->options['reject_uris']);
64
  }
 
65
 
66
+ $controls->options['reject_uris_exact'] = strtolower(trim($controls->options['reject_uris_exact']));
67
+ if (empty($controls->options['reject_uris_exact'])) {
68
+ unset($controls->options['reject_uris_exact_enabled']);
69
+ $controls->options['reject_uris_exact'] = array();
70
+ } else {
71
+ $controls->options['reject_uris_exact'] = str_replace('#', ' ', $controls->options['reject_uris_exact']);
72
+ $controls->options['reject_uris_exact'] = $plugin->text_to_list($controls->options['reject_uris_exact']);
73
  }
74
+
75
+ update_option('hyper-cache', $controls->options);
76
+
77
+ $controls->messages = __('Options saved. If you changed any of the bypasses empty the cache.', 'hyper-cache');
78
+
79
+ $plugin->options = $controls->options;
80
+ $r = $plugin->build_advanced_cache();
81
+
82
+ if ($r == false) {
83
+ $controls->errors = 'Unable to write the <code>wp-content/advanced-cache.php</code> file. Check the file or folder permissions.';
84
  }
85
  }
86
 
87
+ if ($controls->is_action('clean')) {
88
+ $folder = $plugin->get_folder();
89
+ $plugin->remove_dir($folder . '');
90
+ $controls->messages = __('The cache folder has been cleaned.', 'hyper-cache');
91
+ }
92
 
93
+ if ($controls->is_action('autoclean')) {
94
+ $plugin->hook_hyper_cache_clean();
95
+ $controls->messages = 'Done!';
 
 
 
 
 
 
 
96
  }
97
 
98
+ if ($controls->is_action('clean-home')) {
99
+ $home = get_option('home');
100
+ $home = substr($home, strpos($home, '://') + 1);
101
+ $folder = $plugin->get_folder() . '/' . $home;
102
+ @unlink($folder . '/index.html');
103
+ @unlink($folder . '/index.html.gz');
104
+ @unlink($folder . '/index-https.html');
105
+ @unlink($folder . '/index-https.html.gz');
106
+ @unlink($folder . '/index-mobile.html');
107
+ @unlink($folder . '/index-mobile.html.gz');
108
+ @unlink($folder . '/index-https-mobile.html');
109
+ @unlink($folder . '/index-https-mobile.html.gz');
110
+ @unlink($folder . '/robots.txt');
111
+ $plugin->remove_dir($folder . '/feed/');
112
+ $plugin->remove_dir($folder . '/page/');
113
+ $base = get_option('category_base');
114
+ if (empty($base)) {
115
+ $base = 'category';
116
+ }
117
+ $plugin->remove_dir($folder . '/' . $base . '/');
118
+
119
+ $base = get_option('tag_base');
120
+ if (empty($base)) {
121
+ $base = 'tag';
122
+ }
123
+ $plugin->remove_dir($folder . '/' . $base . '/');
124
+
125
+ $plugin->remove_dir($folder . '/type/');
126
+
127
+ $plugin->remove_dir($folder . '/' . date('Y') . '/');
128
  }
129
 
130
+ if ($controls->is_action('delete')) {
131
+ delete_option('hyper-cahe');
132
+ $controls->messages = 'Options deleted';
 
 
 
 
 
 
133
  }
134
+
135
+ if ($controls->is_action('size')) {
136
+ $folder = $plugin->get_folder();
137
+ $controls->messages = __('Cache size', 'hyper-cache') . ': ' . size_format((hc_size($folder . '/')));
138
  }
139
 
140
+ if ($controls->is_action('reset_mobile_agents')) {
141
+ $controls->options['mobile_agents'] = explode('|', HyperCache::MOBILE_AGENTS);
 
142
  }
143
+ if ($controls->is_action('import')) {
144
 
145
+ $old_options = get_option('hyper');
 
 
 
 
 
 
 
 
 
 
146
 
147
+ if (!is_array($old_options)) {
148
+ $controls->errors = 'Old Hyper Cache options are missing or not readable';
149
+ } else {
150
 
151
+ $uris = $plugin->text_to_list($old_options['reject']);
152
+ $controls->options['reject_uris'] = array();
153
+ $controls->options['reject_uris_exact'] = array();
154
 
155
+ foreach ($uris as $uri) {
156
+ if (substr($uri, 0, 1) == '"') {
157
+ $controls->options['reject_uris_exact'] = str_replace('"', '', $uri);
158
+ } else {
159
+ $controls->options['reject_uris'];
160
+ }
161
+ }
162
 
163
+ $controls->options['mobile'] = isset($old_options['timeout']) ? 1 : 0;
164
+ $controls->options['max_age'] = (int) $old_options['timeout'] / 60;
165
+ $controls->options['reject_agents'] = $plugin->text_to_list($old_options['reject_agents']);
166
+ $controls->options['reject_cookies'] = $plugin->text_to_list($old_options['reject_cookies']);
167
+ $controls->options['mobile_agents'] = $plugin->text_to_list($old_options['mobile_agents']);
168
 
169
+ update_option('hyper-cache', $controls->options);
 
 
 
 
170
 
171
+ $controls->messages = 'Old options imported, now review them and save.';
 
 
 
172
  }
173
+ }
174
+
175
+ function hc_size($dir) {
176
+ $files = glob($dir . '*', GLOB_MARK);
177
+ $size = 0;
178
+ if (!empty($files)) {
179
+ foreach ($files as &$file) {
180
+ if (substr($file, -1) == '/')
181
+ $size += hc_size($file);
182
+ else
183
+ $size += @filesize($file);
184
+ }
185
  }
186
+ return $size;
187
+ }
188
+
189
+ if ($controls->options == null) {
190
+ $controls->options = get_option('hyper-cache');
191
+ }
192
+
193
+ // For installation that does not create the directory on activation
194
+ wp_mkdir_p($plugin->get_folder());
195
+
196
+ // Sometime it happens that a scheduled job is lost...
197
+ if (!wp_next_scheduled('hyper_cache_clean')) {
198
+ wp_schedule_event(time()+300, 'hourly', 'hyper_cache_clean');
199
+ }
200
+
201
  ?>
202
+ <script>
203
+ jQuery(document).ready(function() {
204
+ jQuery(function() {
205
+ tabs = jQuery("#tabs").tabs({
206
+ cookie: {
207
+ expires: 30
208
+ }
209
+ });
210
+ });
211
+ });
212
+ </script>
213
+ <div class="wrap">
214
 
215
+ <h2>Hyper Cache</h2>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
216
 
217
+ <?php if (!defined('WP_CACHE') || !WP_CACHE) { ?>
218
+ <div class="error">
219
+ <p>
220
+ You must add to the file wp-config.php (after the <code>define('WPLANG', '');</code>) the line of code:
221
+ <code>define('WP_CACHE', true);</code>.
222
+ </p>
 
 
 
 
 
223
  </div>
224
+ <?php } ?>
225
+
226
+ <?php if (@filemtime(WP_CONTENT_DIR . '/advanced-cache.php') < @filemtime(dirname(__FILE__) . '/advanced-cache.php')) { ?>
227
+ <div class="error">
228
+ <p>
229
+ <?php _e('You must save the options since some files must be updated.', 'hyper-cache'); ?>
230
+ </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
  </div>
232
+ <?php } ?>
233
+
234
+ <?php if (!is_dir($plugin->get_folder())) { ?>
235
+ <div class="error">
236
+ <p>
237
+ <?php
238
+ printf(__('Hyper Cache was not able to create or find the %s folder.', 'hyper-cache'),
239
+ '<code>' . $plugin->get_folder() . '</code>');
240
+ _e('Please create it manually with list, write and read permissions (usually 777).', 'hyper-cache');
241
+ ?>
242
+
243
+ </p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
244
  </div>
245
+ <?php } ?>
246
+
247
+ <?php if (get_option('permalink_structure') == '') { ?>
248
+ <div class="error">
249
+ <p>
250
+ <?php
251
+ _e('You should choose a different permalink structure.', 'hyper-cache');
252
+ _e('Change it on the <a href="options-permalink.php" target="_blank">permalink panel</a> otherwise Hyper Cache cannot work properly.', 'hyper-cache');
253
+ ?>
254
+ </p>
255
  </div>
256
+ <?php } ?>
257
+
258
+
259
+ <?php $controls->show(); ?>
260
+
261
+
262
+ <form method="post" action="">
263
+ <?php $controls->init(); ?>
264
+
265
+
266
+ <p>
267
+ Please, refer to the <a href="http://www.satollo.net/plugins/hyper-cache" target="_blank">official page</a>
268
+ and the <a href="http://www.satollo.net/forums/forum/hyper-cache" target="_blank">official forum</a> for support.
269
+
270
+ <a href="https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_id=5PHGDGNHAYLJ8" target="_blank"><img style="vertical-align: bottom" src="http://www.satollo.net/images/donate.png"></a>
271
+ Even <b>2$</b> helps! (<a href="http://www.satollo.net/donations" target="_blank">read more</a>)
272
+ </p>
273
+ <p>
274
+ Want a full mail marketing system in your blog? Try my free <a href="http://www.satollo.net/plugins/newsletter" target="_blank">Newsletter</a> plugin.
275
+ </p>
276
+ <p>
277
+ <?php $controls->button('clean', __('Clean the whole cache', 'hyper-cache')); ?>
278
+ <?php $controls->button('clean-home', __('Clean home and archives', 'hyper-cache')); ?>
279
+ <?php $controls->button('size', __('Compute the cache size', 'hyper-cache')); ?>
280
+ <?php $controls->button('import', __('Import old options', 'hyper-cache'), 'Sure? Your setting will be overwritten.'); ?>
281
+ </p>
282
+
283
+ <div id="tabs">
284
+ <ul>
285
+ <li><a href="#tabs-general"><?php _e('General', 'hyper-cache'); ?></a></li>
286
+ <li><a href="#tabs-rejects"><?php _e('Bypasses', 'hyper-cache'); ?></a></li>
287
+ <li><a href="#tabs-mobile"><?php _e('Mobile', 'hyper-cache'); ?></a></li>
288
+ <?php if (defined('HYPER_CACHE_BETA') && HYPER_CACHE_BETA) { ?>
289
+ <li><a href="#tabs-cdn"><?php _e('CDN', 'hyper-cache'); ?></a></li>
290
+ <?php } ?>
291
+ </ul>
292
+
293
+ <?php if (defined('HYPER_CACHE_BETA') && HYPER_CACHE_BETA) { ?>
294
+ <div id="tabs-cdn">
295
+ <p>EXPERIEMTAL! It works only with images, css, scripts.</p>
296
+ <table class="form-table">
297
+ <tr>
298
+ <th>&nbsp;</th>
299
+ <td>
300
+ <?php $controls->checkbox('cdn_enabled', 'Enable'); ?>
301
+ </td>
302
+ </tr>
303
+ <tr>
304
+ <th>CDN URL</th>
305
+ <td>
306
+ <?php $controls->text('cdn_url', 50); ?>
307
+ <p class="description">
308
+ Write here the CDN URL. For example a MaxCDN URL is something like
309
+ <code>http://foo.bar.netdna-cdn.com</code>. You should usually create a pull zone in your
310
+ CDN panel and they will give your an URL.
311
+ </p>
312
+ </td>
313
+ </tr>
314
+ </table>
315
+ <p>
316
+ I'm actually testing it with <a href="http://www.satollo.net/affiliate/maxcdn" target="_blank">MaxCDN</a> and
317
+ <a href="http://www.satollo.net/affiliate/keycdn" target="_blank">KeyCDN</a>.
318
+ </p>
319
+ </div>
320
+ <?php } ?>
321
+
322
+ <div id="tabs-general">
323
+
324
+ <table class="form-table">
325
+ <tr>
326
+ <th>Disable translations</th>
327
+ <td>
328
+ <?php $controls->checkbox('translation_disabled', 'Disable'); ?>
329
+ <p class="description">
330
+ <!-- Do not translate that -->
331
+ If you want to see this panel with the original labels, you can disable the
332
+ tranlsation.
333
+ </p>
334
+ </td>
335
+ </tr>
336
+ <tr>
337
+ <th><?php _e('Cached pages will be valid for', 'hyper-cache'); ?></th>
338
+ <td>
339
+ <?php $controls->text('max_age'); ?> hours
340
+ <p class="description"><?php _e('0 means forever.', 'hyper-cache'); ?></p>
341
+ </td>
342
+ </tr>
343
+ <tr>
344
+ <th><?php _e('Enable compression', 'hyper-cache'); ?></th>
345
+ <td>
346
+ <?php $controls->checkbox('gzip'); ?>
347
+
348
+ <p class="description">
349
+ <?php _e('If you note odd characters when enabled, disable it since your server is already
350
+ compressing the pages.', 'hyper-cache'); ?>
351
+ </p>
352
+ </td>
353
+ </tr>
354
+ <tr>
355
+ <th>When the home is refreshed, refresh even the</th>
356
+ <td>
357
+ <?php $controls->text('clean_last_posts', 5); ?> latest post
358
+ <p class="description">
359
+ <?php _e('The number of latest posts to invalidate when the home is invalidated.', 'hyper-cache'); ?>
360
+ </p>
361
+ </td>
362
+ </tr>
363
+ <tr>
364
+ <th>When a post receives a comment</th>
365
+ <td>
366
+ <?php $controls->checkbox('clean_archives_on_comment'); ?> clean archives (categories, tags, ..., but not the home)
367
+ <br>
368
+ <?php $controls->checkbox('clean_home_on_comment'); ?> clean the home
369
+ <p class="description">
370
+
371
+ </p>
372
+ </td>
373
+ </tr>
374
+ <tr>
375
+ <th>When a post is edited</th>
376
+ <td>
377
+ <?php $controls->checkbox('clean_archives_on_post_edit'); ?> clean archives (categories, tags, ..., but not the home)
378
+ <br>
379
+ <?php $controls->checkbox('clean_home_on_post_edit'); ?> clean the home
380
+ <p class="description">
381
+
382
+ </p>
383
+ </td>
384
+ </tr>
385
+
386
+ <tr>
387
+ <th><?php _e('Cache folder', 'hyper-cache'); ?></th>
388
+ <td>
389
+ <?php $controls->text('folder', 70); ?> path on disk
390
+ <p class="description">
391
+ Leave blank for default value. You can even evaluate to leave
392
+ this blank and create a symbolic link <code>wp-content/cache/hyper-cache -&gt; [your folder]</code>. Your blog is located on
393
+ <code><?php echo ABSPATH; ?></code>. A wrong configuration can destroy your blog.
394
+ </p>
395
+ </td>
396
+ </tr>
397
+ <tr>
398
+ <th><?php _e('Next autoclean will run in', 'hyper-cache'); ?></th>
399
+ <td>
400
+ <?php $controls->checkbox('autoclean', 'enable it'); ?>
401
+
402
+ (will run again in <?php echo (int)((wp_next_scheduled('hyper_cache_clean')-time())/60) ?> minutes)
403
+ <p class="description">
404
+ <?php _e('The autoclean process removes old files to save disk space.', 'hyper-cache'); ?>
405
+ <?php _e('If you enable the "serve expired pages to bots", you should disable the auto clean.', 'hyper-cache'); ?>
406
+ </p>
407
+ </td>
408
+ </tr>
409
+ <tr valign="top">
410
+ <th><?php _e('Allow browser caching', 'hyper-cache'); ?></th>
411
+ <td>
412
+ <?php $controls->checkbox('browser_cache', 'enable it'); ?>
413
+
414
+ with an expire time of <?php $controls->text('browser_cache_hours', 5); ?> hours
415
+ <p class="description">
416
+ When enabled Hyper Cache sends a signal to the browser allowing it to NOT request a page more than once and
417
+ to use the copy it has in the local cache. If you set an expire time greater than zero, the browser should keep the copy
418
+ for that amount of hours, otherwise Hyper Cache will tell the browser to keep the copy until the page expire in the blog
419
+ cache.<br>
420
+ Usually I keep this feature disabled.
421
+ </p>
422
+ </td>
423
+ </tr>
424
+ <!--
425
+ <tr>
426
+ <th><?php _e('Remove HTTP/HTTPS', 'hyper-cache'); ?></th>
427
+ <td>
428
+ <?php $controls->checkbox('remove_protocol', 'Enable'); ?>
429
+ <p class="description">
430
+ If your site uses both HTTP and HTTPS it's better to have page links as
431
+ <code>://www.domain.com/...</code> without the protocol.
432
+ </p>
433
+ </td>
434
+ </tr>
435
+ -->
436
+
437
+ <tr valign="top">
438
+ <th><?php _e('HTTPS', 'hyper-cache'); ?></th>
439
+ <td>
440
+ <?php $controls->select('https', array(0 => __('Bypass the cache', 'hyper-cache'),
441
+ 1 => __('Cache separately', 'hyper-cache'),
442
+ 2 => __('Use the standard cache (I have HTTP/HTTPS aware pages)', 'hyper-cache'))); ?>
443
+ <p class="description">
444
+ </p>
445
+ </td>
446
+ </tr>
447
+
448
+ <tr>
449
+ <th><?php _e('Use readfile()', 'hyper-cache'); ?></th>
450
+ <td>
451
+ <?php $controls->checkbox('readfile', 'Enable'); ?>
452
+ <p class="description">
453
+ The PHP function readfile() to send back a page should optimized but on some server
454
+ it has less performances the a standard file_get_contents(). Probably you won't notice the
455
+ difference.
456
+ </p>
457
+ </td>
458
+ </tr>
459
+ <!--
460
+ <tr>
461
+ <th><?php _e('Ignore no-cache header from bots', 'hyper-cache'); ?></th>
462
+ <td>
463
+ <?php $controls->checkbox('bots_ignore_nocache', 'Enable'); ?>
464
+ <p class="description">
465
+ Bots usually send a no-cache request to ask always fresh pages. This option force the cache to
466
+ ignore such request and serve a caches page if available.
467
+ </p>
468
+ </td>
469
+ </tr>
470
+ -->
471
+ <tr>
472
+ <th><?php _e('Serve expired pages to bots', 'hyper-cache'); ?></th>
473
+ <td>
474
+ <?php $controls->checkbox('serve_expired_to_bots', 'Enable'); ?>
475
+ <p class="description">
476
+ Serve a cache page even if expired when requested by bots.
477
+ </p>
478
+ </td>
479
+ </tr>
480
+ </table>
481
+
482
+ </div>
483
+
484
+ <div id="tabs-rejects">
485
+ <table class="form-table">
486
+ <tr>
487
+ <th><?php _e('Do not cache the home page', 'hyper-cache'); ?></th>
488
+ <td>
489
+ <?php $controls->checkbox('reject_home'); ?>
490
+ <p class="description">
491
+ <?php _e('When active, the home page and its subpages are not cached.', 'hyper-cache'); ?>
492
+ <?php _e('Works even with a static home page.', 'hyper-cache'); ?>
493
+ </p>
494
+ </td>
495
+ </tr>
496
+ <tr>
497
+ <th><?php _e('Do not cache the "404 - Not found" page', 'hyper-cache'); ?></th>
498
+ <td>
499
+ <?php $controls->checkbox('reject_404'); ?>
500
+ <p class="description">
501
+ <?php _e('When active, Hyper Cache does not serve a cached "404 not found" page.', 'hyper-cache'); ?>
502
+ <?php _e('Requests which lead to a 404 not found page overload you blog since WordPress must generate a full page', 'hyper-cache'); ?>
503
+ <?php _e('Caching it help in reduce that overload.', 'hyper-cache'); ?>
504
+ </p>
505
+ </td>
506
+ </tr>
507
+ <tr>
508
+ <th><?php _e('Do not cache the blog main feeds', 'hyper-cache'); ?></th>
509
+ <td>
510
+ <?php $controls->checkbox('reject_feeds'); ?>
511
+ <p class="description">
512
+ <?php printf(__('When active, the main blog feed %s is not cached.', 'hyper-cache'),
513
+ '(<code>' . get_option('home') . '/feed</code>)'); ?>
514
+ </p>
515
+ </td>
516
+ </tr>
517
+ <tr>
518
+ <th><?php _e('Do not cache single post comment feed', 'hyper-cache'); ?></th>
519
+ <td>
520
+ <?php $controls->checkbox('reject_comment_feeds'); ?>
521
+ <p class="description">
522
+ <?php _e('When active, the single post comment feeds are not cached.', 'hyper-cache'); ?>
523
+ <?php _e('Usually I enable this bypass since it saves disk space and comment feed on single posts are not usually used.', 'hyper-cache'); ?>
524
+ </p>
525
+ </td>
526
+ </tr>
527
+ <tr>
528
+ <th><?php _e('Exact URIs to bypass', 'hyper-cache'); ?></th>
529
+ <td>
530
+ <?php $controls->checkbox('reject_uris_exact_enabled', __('Enable', 'hyper-cache')); ?><br>
531
+ <?php $controls->textarea('reject_uris_exact'); ?>
532
+ <p class="description">
533
+ <?php _e('One per line.', 'hyper-cache'); ?>
534
+ <?php _e('Those URIs are exactly matched.', 'hyper-cache'); ?>
535
+ <?php _e('For example if you add the <code>/my-single-post</code> URI and a request is received for <code>http://youblog.com<strong>/my-single-post</strong></code> that page IS NOT cached.', 'hyper-cache'); ?>
536
+ <?php _e('A request for <code>http://youblog.com<strong>/my-single-post-something</strong></code> IS cached.', 'hyper-cache'); ?>
537
+ </p>
538
+ </td>
539
+ </tr>
540
+ <tr>
541
+ <th><?php _e('(Starting with) URIs to bypass', 'hyper-cache'); ?></th>
542
+ <td>
543
+ <?php $controls->checkbox('reject_uris_enabled', __('Enable', 'hyper-cache')); ?><br>
544
+ <?php $controls->textarea('reject_uris'); ?>
545
+ <p class="description">
546
+ <?php _e('One per line.', 'hyper-cache'); ?>
547
+ <?php _e('Those URIs match if a requested URI starts with one of them.', 'hyper-cache'); ?>
548
+ <?php _e('For example if you add the <code>/my-single-post</code> URI and a request is received for <code>http://youblog.com<strong>/my-single-post</strong></code> that page IS NOT cached.', 'hyper-cache'); ?>
549
+
550
+ <?php _e('A request for <code>http://youblog.com<strong>/my-single-post-something</strong></code> IS NOT cached as well.', 'hyper-cache'); ?>
551
+ </p>
552
+ </td>
553
+ </tr>
554
+ <tr>
555
+ <th><?php _e('Cookies to bypass', 'hyper-cache'); ?></th>
556
+ <td>
557
+ <?php $controls->checkbox('reject_cookies_enabled', __('Enable', 'hyper-cache')); ?><br>
558
+ <?php $controls->textarea('reject_cookies'); ?>
559
+ <p class="description">
560
+ <?php _e('One per line.', 'hyper-cache'); ?>
561
+ <?php _e('If the visitor has a cookie named as one of the listed values, the cache is bypassed.', 'hyper-cache'); ?>
562
+ </p>
563
+ </td>
564
+ </tr>
565
+ <tr>
566
+ <th><?php _e('Devices (user agents) to bypass', 'hyper-cache'); ?></th>
567
+ <td>
568
+ <?php $controls->checkbox('reject_agents_enabled', __('Enable', 'hyper-cache')); ?><br>
569
+ <?php $controls->textarea('reject_agents'); ?>
570
+ <p class="description">
571
+ <?php _e('One per line.', 'hyper-cache'); ?>
572
+ <?php _e('If the visitor has a device with a user agent named as one of the listed values, the cache is bypassed.', 'hyper-cache'); ?>
573
+ </p>
574
+ </td>
575
+ </tr>
576
+
577
+ <tr>
578
+ <th><?php _e('Don\'t serve cached pages to comment authors', 'hyper-cache'); ?></th>
579
+ <td>
580
+ <?php $controls->checkbox('reject_comment_authors', __('Enable', 'hyper-cache')); ?>
581
+
582
+ <p class="description">
583
+ <?php _e('Hyper Cache is able to work with users who left a comment and completes the comment form with
584
+ user data even on cached page', 'hyper-cache'); ?>
585
+ <?php _e('(with a small JavaScript added at the end of the pages).', 'hyper-cache'); ?>
586
+ <?php _e('But the "awaiting moderation" message cannot be shown.', 'hyper-cache'); ?>
587
+ <?php _e('If you have few readers who comment you can disable this feature to get back the classical WordPress comment flow.', 'hyper-cache'); ?>
588
+ </p>
589
+ </td>
590
+ </tr>
591
+ <tr>
592
+ <th><?php _e('Reject posts older than', 'hyper-cache'); ?></th>
593
+ <td>
594
+ <?php $controls->text('reject_old_posts', 5); ?> days
595
+ <p class="description">
596
+ <?php _e('Older posts won\'t be cached and stored resulting in a lower disk space usage.', 'hyper-cache'); ?>
597
+ <?php _e('Useful when older posts have low traffic.', 'hyper-cache'); ?>
598
+ </p>
599
+ </td>
600
+ </tr>
601
+ </table>
602
+ </div>
603
+
604
+ <div id="tabs-mobile">
605
+ <table class="form-table">
606
+ <tr>
607
+ <th><?php _e('Working mode', 'hyper-cache'); ?></th>
608
+ <td>
609
+ <?php $controls->select('mobile', array(0 => __('Use the standard cache', 'hyper-cache'),
610
+ 1 => __('Cache separately', 'hyper-cache'),
611
+ 2 => __('Bypass the cache', 'hyper-cache'))); ?>
612
+
613
+ <p class="description">
614
+ <?php _e('Choose "cache separately" if you produce different content for mobile devices', 'hyper-cache'); ?><br>
615
+ <?php _e('See for example my <a href="http://www.satollo.net/plugins/header-footer" target="_blank">Header and Footer</a> plugin for different desktop/mobile ads injection in posts.', 'hyper-cache'); ?>
616
+ </p>
617
+ </td>
618
+ </tr>
619
+ <tr>
620
+ <th><?php _e('Mobile theme', 'hyper-cache'); ?></th>
621
+ <td>
622
+ <?php
623
+ $themes = wp_get_themes();
624
+ //var_dump($themes);
625
+ $list = array('' => 'Use the active blog theme');
626
+ foreach ($themes as $theme)
627
+ $list[$theme->stylesheet] = $theme->name;
628
+ ?>
629
+ <?php $controls->select('theme', $list); ?>
630
+ <p class="description">
631
+ <?php _e('If you have plugins which produce different content for desktop and mobile devices, you should use a separate cache for mobile.', 'hyper-cache'); ?>
632
+ </p>
633
+ </td>
634
+ </tr>
635
+ <tr>
636
+ <th><?php _e('Mobile user agents', 'hyper-cache'); ?></th>
637
+ <td>
638
+ <?php $controls->textarea('mobile_agents'); ?>
639
+ <?php $controls->button('reset_mobile_agents', 'Reset'); ?>
640
+ <p class="description">
641
+ <?php _e('One per line.', 'hyper-cache'); ?>
642
+ <?php _e('A "user agent" is a text which identify the kind of device used to surf the site.', 'hyper-cache'); ?>
643
+ <?php _e('For example and iPhone has <code>iphone</code> as user agent.', 'hyper-cache'); ?>
644
+ </p>
645
+ </td>
646
+ </tr>
647
+ </table>
648
+ </div>
649
+
650
+
651
  </div>
652
+ <p>
653
+ <?php $controls->button('save', __('Save', 'hyper-cache')); ?>
654
 
655
+ <?php if ($_SERVER['HTTP_HOST'] == 'www.satollo.net' || $_SERVER['HTTP_HOST'] == 'www.satollo.com') { ?>
656
+ <?php $controls->button('delete', 'Delete options'); ?>
657
+ <?php $controls->button('autoclean', 'Autoclean'); ?>
658
+ <?php } ?>
659
+ </p>
660
 
661
+ </form>
 
 
 
662
  </div>
663
+
664
+ <?php
665
+
666
+ class HyperCacheControls {
667
+
668
+ var $options = null;
669
+ var $errors = null;
670
+ var $messages = null;
671
+
672
+ function is_action($action = null) {
673
+ if ($action == null)
674
+ return !empty($_REQUEST['act']);
675
+ if (empty($_REQUEST['act']))
676
+ return false;
677
+ if ($_REQUEST['act'] != $action)
678
+ return false;
679
+ if (check_admin_referer('save'))
680
+ return true;
681
+ die('Invalid call');
682
+ }
683
+
684
+ function text($name, $size = 20) {
685
+ if (!isset($this->options[$name]))
686
+ $this->options[$name] = '';
687
+ $value = $this->options[$name];
688
+ if (is_array($value))
689
+ $value = implode(',', $value);
690
+ echo '<input name="options[' . $name . ']" type="text" size="' . $size . '" value="';
691
+ echo htmlspecialchars($value);
692
+ echo '"/>';
693
+ }
694
+
695
+ function checkbox($name, $label = '') {
696
+ if (!isset($this->options[$name]))
697
+ $this->options[$name] = '';
698
+ $value = $this->options[$name];
699
+ echo '<label><input class="panel_checkbox" name="options[' . $name . ']" type="checkbox" value="1"';
700
+ if (!empty($value))
701
+ echo ' checked';
702
+ echo '>';
703
+ echo $label;
704
+ echo '</label>';
705
+ }
706
+
707
+ function textarea($name) {
708
+ if (!isset($this->options[$name]))
709
+ $value = '';
710
+ else
711
+ $value = $this->options[$name];
712
+ if (is_array($value))
713
+ $value = implode("\n", $value);
714
+ echo '<textarea name="options[' . $name . ']" style="width: 100%; heigth: 120px;">';
715
+ echo htmlspecialchars($value);
716
+ echo '</textarea>';
717
+ }
718
+
719
+ function select($name, $options) {
720
+ if (!isset($this->options[$name]))
721
+ $this->options[$name] = '';
722
+ $value = $this->options[$name];
723
+
724
+ echo '<select name="options[' . $name . ']">';
725
+ foreach ($options as $key => $label) {
726
+ echo '<option value="' . $key . '"';
727
+ if ($value == $key)
728
+ echo ' selected';
729
+ echo '>' . htmlspecialchars($label) . '&nbsp;&nbsp;</option>';
730
+ }
731
+ echo '</select>';
732
+ }
733
+
734
+ function button($action, $label, $message = null) {
735
+ if ($message == null) {
736
+ echo '<input class="button-primary" type="submit" value="' . $label . '" onclick="this.form.act.value=\'' . $action . '\'"/>';
737
+ } else {
738
+ echo '<input class="button-primary" type="submit" value="' . $label . '" onclick="this.form.act.value=\'' . $action . '\';return confirm(\'' .
739
+ htmlspecialchars($message) . '\')"/>';
740
+ }
741
+ }
742
+
743
+ function init() {
744
+ echo '<script type="text/javascript">
745
+ jQuery(document).ready(function(){
746
+ jQuery("textarea").focus(function() {
747
+ jQuery(this).css("height", "400px");
748
+ });
749
+ jQuery("textarea").blur(function() {
750
+ jQuery(this).css("height", "120px");
751
+ });
752
+ });
753
+ </script>
754
+ ';
755
+ echo '<input name="act" type="hidden" value=""/>';
756
+ wp_nonce_field('save');
757
+ }
758
+
759
+ function show() {
760
+ if (!empty($this->errors)) {
761
+ echo '<div class="error"><p>';
762
+ echo $this->errors;
763
+ echo '</p></div>';
764
+ }
765
+
766
+ if (!empty($this->messages)) {
767
+ echo '<div class="updated"><p>';
768
+ echo $this->messages;
769
+ echo '</p></div>';
770
+ }
771
+ }
772
+
773
+ }
774
+ ?>
plugin.php CHANGED
@@ -1,456 +1,753 @@
1
  <?php
 
2
  /*
3
- Plugin Name: Hyper Cache
4
- Plugin URI: http://www.satollo.net/plugins/hyper-cache
5
- Description: Hyper Cache is a cache system for WordPress to improve it's perfomances and save resources. <a href="http://www.satollo.net/plugins/hyper-cache" target="_blank">Hyper Cache official page</a>. To manually upgrade remember the sequence: deactivate, update, reactivate.
6
- Version: 2.9.1.6
7
- Text Domain: hyper-cache
8
- Author: Stefano Lissa
9
- Author URI: http://www.satollo.net
10
- Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
11
-
12
- Copyright 2011 Satollo (email : info@satollo.net)
13
-
14
- This program is free software; you can redistribute it and/or modify
15
- it under the terms of the GNU General Public License as published by
16
- the Free Software Foundation; either version 2 of the License, or
17
- (at your option) any later version.
18
-
19
- This program is distributed in the hope that it will be useful,
20
- but WITHOUT ANY WARRANTY; without even the implied warranty of
21
- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
22
- GNU General Public License for more details.
23
-
24
- You should have received a copy of the GNU General Public License
25
- along with this program; if not, write to the Free Software
26
- Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
27
-
28
- */
29
-
30
- $hyper_invalidated = false;
31
- $hyper_invalidated_post_id = null;
32
-
33
-
34
- // On activation, we try to create files and directories. If something goes wrong
35
- // (eg. for wrong permission on file system) the options page will give a
36
- // warning.
37
- register_activation_hook(__FILE__, 'hyper_activate');
38
- function hyper_activate()
39
- {
40
- $options = get_option('hyper');
41
-
42
- wp_clear_scheduled_hook('hyper_clean');
43
-
44
- if (!is_array($options)) {
45
- $options = array();
46
- $options['comment'] = 1;
47
- $options['archive'] = 1;
48
- $options['timeout'] = 1440;
49
- $options['redirects'] = 1;
50
- $options['notfound'] = 1;
51
- $options['clean_interval'] = 60;
52
- $options['gzip'] = 1;
53
- $options['store_compressed'] = 1;
54
- $options['expire_type'] = 'post';
55
- update_option('hyper', $options);
56
- }
57
-
58
- $buffer = hyper_generate_config($options);
59
- $file = @fopen(WP_CONTENT_DIR . '/advanced-cache.php', 'wb');
60
- @fwrite($file, $buffer);
61
- @fclose($file);
62
-
63
- wp_mkdir_p(WP_CONTENT_DIR . '/cache/hyper-cache');
64
-
65
- wp_schedule_event(time()+300, 'hourly', 'hyper_clean');
66
  }
67
 
68
- add_action('hyper_clean', 'hyper_clean');
69
- function hyper_clean()
70
- {
71
- // Latest global invalidation (may be false)
72
- $invalidation_time = @filemtime(WP_CONTENT_DIR . '/cache/hyper-cache/_global.dat');
 
 
 
 
 
 
 
73
 
74
- hyper_log('start cleaning');
 
 
75
 
76
- $options = get_option('hyper');
 
77
 
78
- $timeout = $options['timeout']*60;
79
- if ($timeout == 0) return;
 
 
 
 
80
 
81
- $path = WP_CONTENT_DIR . '/cache/hyper-cache';
82
- $time = time();
83
 
84
- $handle = @opendir($path);
85
- if (!$handle) {
86
- hyper_log('unable to open cache dir');
87
- return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  }
89
 
90
- while ($file = readdir($handle)) {
91
- if ($file == '.' || $file == '..' || $file[0] == '_') continue;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
92
 
93
- hyper_log('checking ' . $file . ' for cleaning');
94
- $t = @filemtime($path . '/' . $file);
95
- hyper_log('file time ' . $t);
96
- if ($time - $t > $timeout || ($invalidation_time && $t < $invalidation_time)) {
97
- @unlink($path . '/' . $file);
98
- hyper_log('cleaned ' . $file);
99
  }
100
  }
101
- closedir($handle);
102
 
103
- hyper_log('end cleaning');
104
- }
 
 
 
105
 
106
- register_deactivation_hook(__FILE__, 'hyper_deactivate');
107
- function hyper_deactivate()
108
- {
109
- wp_clear_scheduled_hook('hyper_clean');
 
110
 
111
- // burn the file without delete it so one can rewrite it
112
- $file = @fopen(WP_CONTENT_DIR . '/advanced-cache.php', 'wb');
113
- if ($file)
114
- {
115
- @fwrite($file, '');
116
- @fclose($file);
117
  }
118
- }
119
 
120
- add_action('admin_menu', 'hyper_admin_menu');
121
- function hyper_admin_menu()
122
- {
123
- add_options_page('Hyper Cache', 'Hyper Cache', 'manage_options', 'hyper-cache/options.php');
124
- }
 
 
 
 
 
 
 
 
 
 
125
 
126
- // Completely invalidate the cache. The hyper-cache directory is renamed
127
- // with a random name and re-created to be immediately available to the cache
128
- // system. Then the renamed directory is removed.
129
- // If the cache has been already invalidated, the function doesn't anything.
130
- function hyper_cache_invalidate()
131
- {
132
- global $hyper_invalidated;
133
 
134
- hyper_log("hyper_cache_invalidate> Called");
 
135
 
136
- if ($hyper_invalidated)
137
- {
138
- hyper_log("hyper_cache_invalidate> Cache already invalidated");
139
- return;
 
 
 
140
  }
141
 
142
- if (!@touch(WP_CONTENT_DIR . '/cache/hyper-cache/_global.dat'))
143
- {
144
- hyper_log("hyper_cache_invalidate> Unable to touch cache/_global.dat");
 
 
 
 
 
 
 
 
 
145
  }
146
- else
147
- {
148
- hyper_log("hyper_cache_invalidate> Touched cache/_global.dat");
 
 
 
 
 
 
 
 
 
149
  }
150
- @unlink(WP_CONTENT_DIR . '/cache/hyper-cache/_archives.dat');
151
- $hyper_invalidated = true;
152
 
153
- }
 
 
 
 
 
 
 
154
 
155
- /**
156
- * Invalidates a single post and eventually the home and archives if
157
- * required.
158
- */
159
- function hyper_cache_invalidate_post($post_id)
160
- {
161
- global $hyper_invalidated_post_id;
162
-
163
- hyper_log("hyper_cache_invalidate_post(" . $post_id . ")> Called");
164
-
165
- if ($hyper_invalidated_post_id == $post_id)
166
- {
167
- hyper_log("hyper_cache_invalidate_post(" . $post_id . ")> Post was already invalidated");
168
- return;
169
- }
170
-
171
- $options = get_option('hyper');
172
-
173
- if ($options['expire_type'] == 'none')
174
- {
175
- hyper_log("hyper_cache_invalidate_post(" . $post_id . ")> Invalidation disabled");
176
- return;
177
- }
178
-
179
- if ($options['expire_type'] == 'post')
180
- {
181
- $post = get_post($post_id);
182
-
183
- $link = get_permalink($post_id);
184
- hyper_log('Permalink to invalidate ' . $link);
185
- // Remove 'http://', and for wordpress 'pretty URLs' strip trailing slash (e.g. 'http://my-site.com/my-post/' -> 'my-site.com/my-post')
186
- // The latter ensures existing cache files are still used if a wordpress admin just adds/removes a trailing slash to/from the permalink format
187
- //$link = substr($link, 7);
188
- $link = preg_replace( '~^.*?://~', '', $link );
189
- hyper_log('Corrected permalink to invalidate ' . $link);
190
- $file = md5($link);
191
- hyper_log('File basename to invalidate ' . $file);
192
-
193
- $path = WP_CONTENT_DIR . '/cache/hyper-cache';
194
- $handle = @opendir($path);
195
- if ($handle)
196
- {
197
- while ($f = readdir($handle))
198
- {
199
- if (substr($f, 0, 32) == $file)
200
- {
201
- if (unlink($path . '/' . $f)) {
202
- hyper_log('Deleted ' . $path . '/' . $f);
203
- }
204
- else {
205
- hyper_log('Unable to delete ' . $path . '/' . $f);
206
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
207
  }
208
  }
209
- closedir($handle);
 
 
 
 
 
 
 
 
 
210
  }
 
211
 
212
- $hyper_invalidated_post_id = $post_id;
 
 
213
 
214
- hyper_log("hyper_cache_invalidate_post(" . $post_id . ")> Post invalidated");
 
 
 
 
 
 
215
 
216
- if ($options['archive'])
217
- {
 
 
 
218
 
219
- hyper_log("hyper_cache_invalidate_post(" . $post_id . ")> Archive invalidation required");
 
 
 
 
 
 
220
 
221
- if (!@touch(WP_CONTENT_DIR . '/cache/hyper-cache/_archives.dat'))
222
- {
223
- hyper_log("hyper_cache_invalidate_post(" . $post_id . ")> Unable to touch cache/_archives.dat");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
224
  }
225
- else
226
- {
227
- hyper_log("hyper_cache_invalidate_post(" . $post_id . ")> Touched cache/_archives.dat");
 
 
 
 
 
 
 
 
 
 
 
 
 
 
228
  }
229
  }
230
- return;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
231
  }
232
 
233
- if ($options['expire_type'] == 'all')
234
- {
235
- hyper_log("hyper_cache_invalidate_post(" . $post_id . ")> Full invalidation");
236
- hyper_cache_invalidate();
237
- return;
238
  }
239
- }
240
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
241
 
242
- // Completely remove a directory and it's content.
243
- function hyper_delete_path($path)
244
- {
245
- if ($path == null) return;
246
- $handle = @opendir($path);
247
- if ($handle)
248
- {
249
- while ($file = readdir($handle))
250
- {
251
- if ($file != '.' && $file != '..')
252
- {
253
- @unlink($path . '/' . $file);
 
254
  }
255
  }
256
- closedir($handle);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
257
  }
258
- }
259
 
260
- // Counts the number of file in to the hyper cache directory to give an idea of
261
- // the number of pages cached.
262
- function hyper_count()
263
- {
264
- $count = 0;
265
- //if (!is_dir(ABSPATH . 'wp-content/hyper-cache')) return 0;
266
- if ($handle = @opendir(WP_CONTENT_DIR . '/cache/hyper-cache'))
267
- {
268
- while ($file = readdir($handle))
269
- {
270
- if ($file != '.' && $file != '..')
271
- {
272
- $count++;
273
  }
274
  }
275
- closedir($handle);
276
  }
277
- return $count;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
  }
279
 
280
- add_action('switch_theme', 'hyper_cache_invalidate', 0);
 
 
 
 
 
281
 
282
- add_action('edit_post', 'hyper_cache_invalidate_post', 0);
283
- add_action('publish_post', 'hyper_cache_invalidate_post', 0);
284
- add_action('delete_post', 'hyper_cache_invalidate_post', 0);
 
285
 
 
286
 
287
- // Capture and register if a redirect is sent back from WP, so the cache
288
- // can cache (or ignore) it. Redirects were source of problems for blogs
289
- // with more than one host name (eg. domain.com and www.domain.com) comined
290
- // with the use of Hyper Cache.
291
- add_filter('redirect_canonical', 'hyper_redirect_canonical', 10, 2);
292
- $hyper_redirect = null;
293
- function hyper_redirect_canonical($redirect_url, $requested_url)
294
- {
295
- global $hyper_redirect;
296
 
297
- $hyper_redirect = $redirect_url;
 
 
 
 
298
 
299
- return $redirect_url;
 
 
 
300
  }
301
 
302
- function hyper_log($text)
303
- {
304
- // $file = fopen(ABSPATH . '/log.txt', 'a');
305
- // fwrite($file, $text . "\n");
306
- // fclose($file);
307
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
308
 
309
- function hyper_generate_config(&$options)
310
- {
311
- $buffer = '';
312
-
313
- $timeout = $options['timeout']*60;
314
- if ($timeout == 0) $timeout = 2000000000;
315
-
316
- $buffer = "<?php\n";
317
- $buffer .= '$hyper_cache_path = \'' . WP_CONTENT_DIR . '/cache/hyper-cache/\'' . ";\n";
318
- $buffer .= '$hyper_cache_charset = "' . get_option('blog_charset') . '"' . ";\n";
319
- // Collect statistics
320
- //$buffer .= '$hyper_cache_stats = ' . (isset($options['stats'])?'true':'false') . ";\n";
321
- // Do not cache for commenters
322
- $buffer .= '$hyper_cache_comment = ' . (isset($options['comment'])?'true':'false') . ";\n";
323
- // Ivalidate archives on post invalidation
324
- $buffer .= '$hyper_cache_archive = ' . ($options['archive']?'true':'false') . ";\n";
325
- // Single page timeout
326
- $buffer .= '$hyper_cache_timeout = ' . ($timeout) . ";\n";
327
- // Cache redirects?
328
- $buffer .= '$hyper_cache_redirects = ' . (isset($options['redirects'])?'true':'false') . ";\n";
329
- // Cache page not found?
330
- $buffer .= '$hyper_cache_notfound = ' . (isset($options['notfound'])?'true':'false') . ";\n";
331
- // Separate caching for mobile agents?
332
- $buffer .= '$hyper_cache_mobile = ' . (isset($options['mobile'])?'true':'false') . ";\n";
333
- // WordPress mobile pack integration?
334
- $buffer .= '$hyper_cache_plugin_mobile_pack = ' . (isset($options['plugin_mobile_pack'])?'true':'false') . ";\n";
335
- // Cache the feeds?
336
- $buffer .= '$hyper_cache_feed = ' . (isset($options['feed'])?'true':'false') . ";\n";
337
- // Cache GET request with parameters?
338
- $buffer .= '$hyper_cache_cache_qs = ' . (isset($options['cache_qs'])?'true':'false') . ";\n";
339
- // Strip query string?
340
- $buffer .= '$hyper_cache_strip_qs = ' . (isset($options['strip_qs'])?'true':'false') . ";\n";
341
- // DO NOT cache the home?
342
- $buffer .= '$hyper_cache_home = ' . (isset($options['home'])?'true':'false') . ";\n";
343
- // Disable last modified header
344
- $buffer .= '$hyper_cache_lastmodified = ' . (isset($options['lastmodified'])?'true':'false') . ";\n";
345
- // Allow browser caching?
346
- $buffer .= '$hyper_cache_browsercache = ' . (isset($options['browsercache'])?'true':'false') . ";\n";
347
- // Do not use cache if browser sends no-cache header?
348
- $buffer .= '$hyper_cache_nocache = ' . (isset($options['nocache'])?'true':'false') . ";\n";
349
-
350
- if ($options['gzip']) $options['store_compressed'] = 1;
351
-
352
- $buffer .= '$hyper_cache_gzip = ' . (isset($options['gzip'])?'true':'false') . ";\n";
353
- $buffer .= '$hyper_cache_gzip_on_the_fly = ' . (isset($options['gzip_on_the_fly'])?'true':'false') . ";\n";
354
- $buffer .= '$hyper_cache_store_compressed = ' . (isset($options['store_compressed'])?'true':'false') . ";\n";
355
-
356
- //$buffer .= '$hyper_cache_clean_interval = ' . ($options['clean_interval']*60) . ";\n";
357
-
358
- if (isset($options['reject']) && trim($options['reject']) != '')
359
- {
360
- $options['reject'] = str_replace(' ', "\n", $options['reject']);
361
- $options['reject'] = str_replace("\r", "\n", $options['reject']);
362
- $buffer .= '$hyper_cache_reject = array(';
363
- $reject = explode("\n", $options['reject']);
364
- $options['reject'] = '';
365
- foreach ($reject as $uri)
366
- {
367
- $uri = trim($uri);
368
- if ($uri == '') continue;
369
- $buffer .= "\"" . addslashes(trim($uri)) . "\",";
370
- $options['reject'] .= $uri . "\n";
371
- }
372
- $buffer = rtrim($buffer, ',');
373
- $buffer .= ");\n";
374
- }
375
- else {
376
- $buffer .= '$hyper_cache_reject = false;' . "\n";
377
- }
378
-
379
- if (isset($options['reject_agents']) && trim($options['reject_agents']) != '')
380
- {
381
- $options['reject_agents'] = str_replace(' ', "\n", $options['reject_agents']);
382
- $options['reject_agents'] = str_replace("\r", "\n", $options['reject_agents']);
383
- $buffer .= '$hyper_cache_reject_agents = array(';
384
- $reject_agents = explode("\n", $options['reject_agents']);
385
- $options['reject_agents'] = '';
386
- foreach ($reject_agents as $uri)
387
- {
388
- $uri = trim($uri);
389
- if ($uri == '') continue;
390
- $buffer .= "\"" . addslashes(strtolower(trim($uri))) . "\",";
391
- $options['reject_agents'] .= $uri . "\n";
392
- }
393
- $buffer = rtrim($buffer, ',');
394
- $buffer .= ");\n";
395
- }
396
- else {
397
- $buffer .= '$hyper_cache_reject_agents = false;' . "\n";
398
- }
399
-
400
- if (isset($options['reject_cookies']) && trim($options['reject_cookies']) != '')
401
- {
402
- $options['reject_cookies'] = str_replace(' ', "\n", $options['reject_cookies']);
403
- $options['reject_cookies'] = str_replace("\r", "\n", $options['reject_cookies']);
404
- $buffer .= '$hyper_cache_reject_cookies = array(';
405
- $reject_cookies = explode("\n", $options['reject_cookies']);
406
- $options['reject_cookies'] = '';
407
- foreach ($reject_cookies as $c)
408
- {
409
- $c = trim($c);
410
- if ($c == '') continue;
411
- $buffer .= "\"" . addslashes(strtolower(trim($c))) . "\",";
412
- $options['reject_cookies'] .= $c . "\n";
413
- }
414
- $buffer = rtrim($buffer, ',');
415
- $buffer .= ");\n";
416
- }
417
- else {
418
- $buffer .= '$hyper_cache_reject_cookies = false;' . "\n";
419
- }
420
-
421
- if (isset($options['mobile']))
422
- {
423
- if (!isset($options['mobile_agents']) || trim($options['mobile_agents']) == '')
424
- {
425
- $options['mobile_agents'] = "elaine/3.0\niphone\nipod\npalm\neudoraweb\nblazer\navantgo\nwindows ce\ncellphone\nsmall\nmmef20\ndanger\nhiptop\nproxinet\nnewt\npalmos\nnetfront\nsharp-tq-gx10\nsonyericsson\nsymbianos\nup.browser\nup.link\nts21i-10\nmot-v\nportalmmm\ndocomo\nopera mini\npalm\nhandspring\nnokia\nkyocera\nsamsung\nmotorola\nmot\nsmartphone\nblackberry\nwap\nplaystation portable\nlg\nmmp\nopwv\nsymbian\nepoc";
426
- }
427
-
428
- if (trim($options['mobile_agents']) != '')
429
- {
430
- $options['mobile_agents'] = str_replace(',', "\n", $options['mobile_agents']);
431
- $options['mobile_agents'] = str_replace("\r", "\n", $options['mobile_agents']);
432
- $buffer .= '$hyper_cache_mobile_agents = array(';
433
- $mobile_agents = explode("\n", $options['mobile_agents']);
434
- $options['mobile_agents'] = '';
435
- foreach ($mobile_agents as $uri)
436
- {
437
- $uri = trim($uri);
438
- if ($uri == '') continue;
439
- $buffer .= "\"" . addslashes(strtolower(trim($uri))) . "\",";
440
- $options['mobile_agents'] .= $uri . "\n";
441
  }
442
- $buffer = rtrim($buffer, ',');
443
- $buffer .= ");\n";
444
  }
445
- else
446
- {
447
- $buffer .= '$hyper_cache_mobile_agents = false;' . "\n";
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
448
  }
449
  }
450
-
451
- $buffer .= "include(WP_CONTENT_DIR . '/plugins/hyper-cache/cache.php');\n";
452
- $buffer .= '?>';
453
 
 
 
 
 
 
 
 
 
454
  return $buffer;
455
  }
456
- ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  <?php
2
+
3
  /*
4
+ Plugin Name: Hyper Cache
5
+ Plugin URI: http://www.satollo.net/plugins/hyper-cache
6
+ Description: A easy to configure and efficient cache to increase the speed of your blog.
7
+ Version: 3.1.8
8
+ Author: Stefano Lissa
9
+ Author URI: http://www.satollo.net
10
+ Disclaimer: Use at your own risk. No warranty expressed or implied is provided.
11
+ Contributors: satollo
12
+ */
13
+
14
+ if (!defined('HYPER_CACHE_LOG')) {
15
+ define('HYPER_CACHE_LOG', false);
16
+ }
17
+
18
+ if (isset($_GET['cache'])) {
19
+ if ($_GET['cache'] === '0') {
20
+ setcookie('cache_disable', 1, time() + 3600 * 24 * 365, '/');
21
+ $x = strpos($_SERVER['REQUEST_URI'], '?');
22
+ header('Location:' . substr($_SERVER['REQUEST_URI'], 0, $x));
23
+ die();
24
+ }
25
+
26
+ if ($_GET['cache'] === '1') {
27
+ setcookie('cache_disable', 1, time() - 3600, '/');
28
+ $x = strpos($_SERVER['REQUEST_URI'], '?');
29
+ header('Location:' . substr($_SERVER['REQUEST_URI'], 0, $x));
30
+ die();
31
+ }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
32
  }
33
 
34
+ new HyperCache();
35
+
36
+ global $cache_stop;
37
+
38
+ class HyperCache {
39
+
40
+ var $post_id;
41
+ var $options;
42
+ var $ob_started = false;
43
+ static $instance;
44
+
45
+ const MOBILE_AGENTS = 'android|iphone|iemobile|up.browser|up.link|mmp|symbian|smartphone|midp|wap|phone|ipod|xoom|blackberry';
46
 
47
+ function __construct() {
48
+ self::$instance = $this;
49
+ $this->options = get_option('hyper-cache', array());
50
 
51
+ register_activation_hook('hyper-cache/plugin.php', array($this, 'hook_activate'));
52
+ register_deactivation_hook('hyper-cache/plugin.php', array($this, 'hook_deactivate'));
53
 
54
+ add_action('edit_post', array($this, 'hook_edit_post'), 1);
55
+ add_action('save_post', array($this, 'hook_save_post'), 1);
56
+ add_action('comment_post', array($this, 'hook_comment_post'), 1, 2);
57
+ add_action('wp_update_comment_count', array($this, 'hook_wp_update_comment_count'), 1);
58
+ add_action('bbp_new_reply', array($this, 'hook_bbp_new_reply'));
59
+ add_action('bbp_new_topic', array($this, 'hook_bbp_new_topic'));
60
 
61
+ add_action('hyper_cache_clean', array($this, 'hook_hyper_cache_clean'));
 
62
 
63
+ if (!is_admin() && !isset($_COOKIE['cache_disable'])) {
64
+
65
+ // The function must exists or the advanced-cache.php has been removed
66
+ global $hyper_cache_is_mobile;
67
+ if ($hyper_cache_is_mobile && !empty($this->options['theme'])) {
68
+ add_filter('stylesheet', array($this, 'hook_get_stylesheet'));
69
+ add_filter('template', array($this, 'hook_get_template'));
70
+ }
71
+ add_action('template_redirect', array($this, 'hook_template_redirect'), 0);
72
+ }
73
+
74
+ if (is_admin()) {
75
+ add_action('admin_init', array($this, 'hook_admin_init'));
76
+ add_action('admin_head', array($this, 'hook_admin_head'));
77
+ add_action('admin_menu', array($this, 'hook_admin_menu'));
78
+
79
+ if (!is_dir(WP_CONTENT_DIR . '/logs')) {
80
+ wp_mkdir_p(WP_CONTENT_DIR . '/logs');
81
+ }
82
+ }
83
+ }
84
+
85
+ function log($object) {
86
+ if (is_object($object) || is_array($object)) {
87
+ $object = print_r($object, true);
88
+ }
89
+ //file_put_contents(WP_CONTENT_DIR . '/logs/hyper-cache.log', $object, FILE_APPEND);
90
+ error_log($object);
91
  }
92
 
93
+ function hook_activate() {
94
+ if (!is_dir(WP_CONTENT_DIR . '/logs')) {
95
+ wp_mkdir_p(WP_CONTENT_DIR . '/logs');
96
+ }
97
+
98
+ if (!isset($this->options['mobile'])) {
99
+ $this->options['mobile'] = 0;
100
+ }
101
+ if (!isset($this->options['folder'])) {
102
+ $this->options['folder'] = '';
103
+ }
104
+ if (!isset($this->options['max_age'])) {
105
+ $this->options['max_age'] = 24;
106
+ }
107
+ if (!isset($this->options['clean_last_posts'])) {
108
+ $this->options['clean_last_posts'] = 0;
109
+ }
110
+ if (!isset($this->options['mobile_agents'])) {
111
+ $this->options['mobile_agents'] = explode('|', self::MOBILE_AGENTS);
112
+ }
113
+ if (!isset($this->options['reject_agents']))
114
+ $this->options['reject_agents'] = array();
115
+ if (!isset($this->options['reject_cookies']))
116
+ $this->options['reject_cookies'] = array();
117
+ if (!isset($this->options['reject_uris']))
118
+ $this->options['reject_uris'] = array();
119
+ if (!isset($this->options['reject_uris_exact']))
120
+ $this->options['reject_uris_exact'] = array();
121
+ if (!isset($this->options['clean_last_posts']))
122
+ $this->options['clean_last_posts'] = 0;
123
+
124
+ if (!isset($this->options['https']))
125
+ $this->options['https'] = 1;
126
+
127
+ if (!isset($this->options['theme']))
128
+ $this->options['theme'] = '';
129
+
130
+ if (!isset($this->options['browser_cache_hours']))
131
+ $this->options['browser_cache_hours'] = 24;
132
+
133
+ update_option('hyper-cache', $this->options);
134
+
135
+ @wp_mkdir_p(WP_CONTENT_DIR . '/cache/hyper-cache');
136
+
137
+ if (is_file(WP_CONTENT_DIR . '/advanced-cache.php')) {
138
+ $this->build_advanced_cache();
139
+ touch(WP_CONTENT_DIR . '/advanced-cache.php');
140
+ }
141
 
142
+ if (!wp_next_scheduled('hyper_cache_clean')) {
143
+ wp_schedule_event(time() + 300, 'hourly', 'hyper_cache_clean');
 
 
 
 
144
  }
145
  }
 
146
 
147
+ function hook_deactivate() {
148
+ // Reset the file without deleting it to avoid to lost manually assigned permissions
149
+ file_put_contents(WP_CONTENT_DIR . '/advanced-cache.php', '');
150
+ wp_clear_scheduled_hook('hyper_cache_clean');
151
+ }
152
 
153
+ function hook_admin_init() {
154
+ if (isset($_GET['page']) && strpos($_GET['page'], 'hyper-cache/') === 0) {
155
+ wp_enqueue_script('jquery-ui-tabs');
156
+ }
157
+ }
158
 
159
+ function hook_admin_head() {
160
+ if (isset($_GET['page']) && strpos($_GET['page'], 'hyper-cache/') === 0) {
161
+ echo '<link type="text/css" rel="stylesheet" href="' . plugins_url('hyper-cache') . '/admin.css"/>';
162
+ }
 
 
163
  }
 
164
 
165
+ function hook_admin_menu() {
166
+ add_options_page('Hyper Cache', 'Hyper Cache', 'manage_options', 'hyper-cache/options.php');
167
+ }
168
+
169
+ function build_advanced_cache() {
170
+ $advanced_cache = file_get_contents(dirname(__FILE__) . '/advanced-cache.php');
171
+ $advanced_cache = str_replace('HC_MOBILE_AGENTS', implode('|', array_map('preg_quote', $this->options['mobile_agents'])), $advanced_cache);
172
+ $advanced_cache = str_replace('HC_MOBILE', $this->options['mobile'], $advanced_cache);
173
+
174
+ $advanced_cache = str_replace('HC_REJECT_AGENTS_ENABLED', empty($this->options['reject_agents_enabled']) ? 0 : 1, $advanced_cache);
175
+ $advanced_cache = str_replace('HC_REJECT_AGENTS', implode('|', array_map('preg_quote', $this->options['reject_agents'])), $advanced_cache);
176
+
177
+ $advanced_cache = str_replace('HC_REJECT_COOKIES_ENABLED', empty($this->options['reject_cookies_enabled']) ? 0 : 1, $advanced_cache);
178
+ $advanced_cache = str_replace('HC_REJECT_COOKIES', implode('|', array_map('preg_quote', $this->options['reject_cookies'])), $advanced_cache);
179
+
180
 
181
+ $advanced_cache = str_replace('HC_GZIP', isset($this->options['gzip']) ? 1 : 0, $advanced_cache);
182
+ $advanced_cache = str_replace('HC_FOLDER', $this->get_folder(), $advanced_cache);
183
+ $advanced_cache = str_replace('HC_MAX_AGE', $this->options['max_age'], $advanced_cache);
184
+ $advanced_cache = str_replace('HC_REJECT_COMMENT_AUTHORS', isset($this->options['reject_comment_authors']) ? 1 : 0, $advanced_cache);
 
 
 
185
 
186
+ $advanced_cache = str_replace('HC_BROWSER_CACHE_HOURS', $this->options['browser_cache_hours'], $advanced_cache);
187
+ $advanced_cache = str_replace('HC_BROWSER_CACHE', isset($this->options['browser_cache']) ? 1 : 0, $advanced_cache);
188
 
189
+ $advanced_cache = str_replace('HC_HTTPS', (int) $this->options['https'], $advanced_cache);
190
+ $advanced_cache = str_replace('HC_READFILE', isset($this->options['readfile']) ? 1 : 0, $advanced_cache);
191
+
192
+ $advanced_cache = str_replace('HC_SERVE_EXPIRED_TO_BOT', isset($this->options['serve_expired_to_bots']) ? 1 : 0, $advanced_cache);
193
+ $advanced_cache = str_replace('HC_BOTS_IGNORE_NOCACHE', isset($this->options['bots_ignore_nocache']) ? 1 : 0, $advanced_cache);
194
+
195
+ return file_put_contents(WP_CONTENT_DIR . '/advanced-cache.php', $advanced_cache);
196
  }
197
 
198
+ function hook_bbp_new_reply($reply_id) {
199
+ $topic_id = bbp_get_reply_topic_id($reply_id);
200
+ $topic_url = bbp_get_topic_permalink($topic_id);
201
+ //$dir = $this->get_folder() . '' . substr($topic_url, strlen(get_option('home'))) . '/';
202
+ $dir = $this->get_folder() . '/' . substr($topic_url, strpos($topic_url, '://') + 3) . '/';
203
+ $this->remove_dir($dir);
204
+
205
+ $forum_id = bbp_get_reply_forum_id($reply_id);
206
+ $forum_url = bbp_get_forum_permalink($forum_id);
207
+ //$dir = $this->get_folder() . '' . substr($forum_url, strlen(get_option('home'))) . '/';
208
+ $dir = $this->get_folder() . '/' . substr($topic_url, strpos($forum_url, '://') + 3) . '/';
209
+ $this->remove_dir($dir);
210
  }
211
+
212
+ function hook_bbp_new_topic($topic_id) {
213
+ $topic_url = bbp_get_topic_permalink($topic_id);
214
+ //$dir = $this->get_folder() . '' . substr($topic_url, strlen(get_option('home'))) . '/';
215
+ $dir = $this->get_folder() . '/' . substr($topic_url, strpos($topic_url, '://') + 3) . '/';
216
+ $this->remove_dir($dir);
217
+
218
+ $forum_id = bbp_get_topic_forum_id($topic_id);
219
+ $forum_url = bbp_get_forum_permalink($forum_id);
220
+ $dir = $this->get_folder() . '/' . substr($topic_url, strpos($forum_url, '://') + 3) . '/';
221
+ //$dir = $this->get_folder() . '' . substr($forum_url, strlen(get_option('home'))) . '/';
222
+ $this->remove_dir($dir);
223
  }
 
 
224
 
225
+ function hook_comment_post($comment_id, $status) {
226
+ if (HYPER_CACHE_LOG)
227
+ $this->log('Hook: comment_post');
228
+ if ($status === 1) {
229
+ $comment = get_comment($comment_id);
230
+ $this->clean_post($comment->comment_post_ID, isset($this->options['clean_archives_on_comment']), isset($this->options['clean_archives_on_comment']));
231
+ }
232
+ }
233
 
234
+ function hook_wp_update_comment_count($post_id) {
235
+ if (HYPER_CACHE_LOG)
236
+ $this->log('Hook: wp_update_comment_count');
237
+ if ($this->post_id == $post_id) {
238
+ return;
239
+ }
240
+ $this->clean_post($post_id, isset($this->options['clean_archives_on_comment']), isset($this->options['clean_home_on_comment']));
241
+ }
242
+
243
+ function hook_save_post($post_id) {
244
+ if (HYPER_CACHE_LOG)
245
+ $this->log('Hook: save_post');
246
+ }
247
+
248
+ /**
249
+ * edit_post is called even when a comment is added, but the comment hook prevent the execution of
250
+ * edit_post like if the post has been modified.
251
+ */
252
+ function hook_edit_post($post_id) {
253
+ if (HYPER_CACHE_LOG)
254
+ $this->log('Hook: edit_post');
255
+ $this->clean_post($post_id, isset($this->options['clean_archives_on_post_edit']), isset($this->options['clean_home_on_post_edit']));
256
+ }
257
+
258
+ function clean_post($post_id, $clean_archives = true, $clean_home = true) {
259
+ if (HYPER_CACHE_LOG)
260
+ $this->log('Cleaning post ' . $post_id);
261
+ // When someone deletes the advaced-cache.php file
262
+ if (!function_exists('hyper_cache_sanitize_uri')) {
263
+ if (HYPER_CACHE_LOG)
264
+ $this->log('hyper_cache_sanitize_uri does not exists');
265
+ return;
266
+ }
267
+
268
+ if ($this->post_id == $post_id) {
269
+ if (HYPER_CACHE_LOG)
270
+ $this->log('Already cleaned in this session');
271
+ return;
272
+ }
273
+
274
+ $status = get_post_status($post_id);
275
+ if (HYPER_CACHE_LOG)
276
+ $this->log('Status: ' . $status);
277
+ if ($status != 'publish' && $status != 'trash') {
278
+ if (HYPER_CACHE_LOG)
279
+ $this->log('Post not published');
280
+ //$this->log('Not a published post');
281
+ return;
282
+ }
283
+
284
+ if ($status == 'trash') {
285
+ $clean_archives = true;
286
+ $clean_home = true;
287
+ }
288
+
289
+ $this->post_id = $post_id;
290
+ $folder = trailingslashit($this->get_folder());
291
+ $dir = $folder . $this->post_folder($post_id);
292
+ $this->remove_dir($dir);
293
+
294
+ if ($this->options['clean_last_posts'] != 0) {
295
+ $posts = get_posts(array('numberposts' => $this->options['clean_last_posts']));
296
+ foreach ($posts as &$post) {
297
+ $dir = $folder . $this->post_folder($post_id);
298
+ $this->remove_dir($dir);
299
+ }
300
+ }
301
+
302
+
303
+ $dir = $folder . substr(get_option('home'), strpos(get_option('home'), '://') + 3);
304
+
305
+ if ($clean_home) {
306
+ if (HYPER_CACHE_LOG)
307
+ $this->log('Cleaning the home');
308
+
309
+ // The home
310
+ if (HYPER_CACHE_LOG)
311
+ $this->log('Cleaning the home index*');
312
+ @unlink($dir . '/index.html');
313
+ @unlink($dir . '/index.html.gz');
314
+ @unlink($dir . '/index-https.html');
315
+ @unlink($dir . '/index-https.html.gz');
316
+ @unlink($dir . '/index-mobile.html');
317
+ @unlink($dir . '/index-mobile.html.gz');
318
+ @unlink($dir . '/index-https-mobile.html');
319
+ @unlink($dir . '/index-https-mobile.html.gz');
320
+
321
+ $this->remove_dir($dir . '/feed/');
322
+ // Home subpages
323
+ $this->remove_dir($dir . '/page/');
324
+ }
325
+
326
+ //@unlink($dir . '/robots.txt');
327
+ if ($clean_archives) {
328
+ if (HYPER_CACHE_LOG)
329
+ $this->log('Cleaning archives');
330
+
331
+ $base = get_option('category_base');
332
+ if (empty($base)) {
333
+ $base = 'category';
334
+ }
335
+ $this->remove_dir($dir . '/' . $base . '/');
336
+
337
+ $permalink_structure = get_option('permalink_structure');
338
+ //$this->log(substr($permalink_structure, 0, 11));
339
+ if (substr($permalink_structure, 0, 11) == '/%category%') {
340
+ $categories = get_categories();
341
+ //$this->log(print_r($categories, true));
342
+ foreach ($categories as &$category) {
343
+ //$this->log('Removing: ' . $dir . '/' . $category->slug . '/');
344
+ $this->remove_page($dir . '/' . $category->slug);
345
  }
346
  }
347
+
348
+ $base = get_option('tag_base');
349
+ if (empty($base)) {
350
+ $base = 'tag';
351
+ }
352
+ $this->remove_dir($dir . '/' . $base . '/');
353
+
354
+ $this->remove_dir($dir . '/type/');
355
+
356
+ $this->remove_dir($dir . '/' . date('Y') . '/');
357
  }
358
+ }
359
 
360
+ /*
361
+ * Runs only if $hyper_cache_is_mobile is true
362
+ */
363
 
364
+ function hook_get_stylesheet($stylesheet = '') {
365
+ $theme = wp_get_theme($this->options['theme']);
366
+ if (!$theme->exists()) {
367
+ return $stylesheet;
368
+ }
369
+ return $theme->stylesheet;
370
+ }
371
 
372
+ /*
373
+ * Runs only if $hyper_cache_is_mobile is true
374
+ *
375
+ * var WP_Theme $theme
376
+ */
377
 
378
+ function hook_get_template($template) {
379
+ $theme = wp_get_theme($this->options['theme']);
380
+ if (!$theme->exists()) {
381
+ return $template;
382
+ }
383
+ return $theme->template;
384
+ }
385
 
386
+ function hook_template_redirect() {
387
+ global $cache_stop, $hyper_cache_stop, $lite_cache_stop;
388
+
389
+ if (HYPER_CACHE_LOG) {
390
+ $this->log('hook_template_redirect');
391
+ }
392
+
393
+ if ($this->ob_started) {
394
+ return;
395
+ }
396
+
397
+ $home_root = parse_url(get_option('home'), PHP_URL_PATH);
398
+
399
+ if ($cache_stop || $hyper_cache_stop || $lite_cache_stop) {
400
+
401
+ } else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
402
+ $cache_stop = true;
403
+ } else if (!empty($_SERVER['QUERY_STRING'])) {
404
+ $cache_stop = true;
405
+ } else if (is_user_logged_in()) {
406
+ $cache_stop = true;
407
+ } else if (is_trackback()) {
408
+ $cache_stop = true;
409
+ }
410
+
411
+ // Global feed and global comment feed
412
+ else if (isset($this->options['reject_feeds']) && is_feed()) {
413
+ $cache_stop = true;
414
+ }
415
+
416
+ // Single post/page feed
417
+ else if (isset($this->options['reject_comment_feeds']) && is_comment_feed()) {
418
+ $cache_stop = true;
419
+ } else if (isset($this->options['reject_home']) && is_front_page()) {
420
+ $cache_stop = true;
421
+ } else if (is_robots()) {
422
+ $cache_stop = true;
423
+ }
424
+
425
+ if (defined('SID') && SID != '') {
426
+ $cache_stop = true;
427
+ }
428
+
429
+ // Compatibility with XML Sitemap 4.x
430
+ else if (substr($_SERVER['REQUEST_URI'], 0, strlen($home_root) + 8) == ($home_root . '/sitemap')) {
431
+ $cache_stop = true;
432
+ }
433
+ // Never cache pages generated for administrator (to be patched to see if the user is an administrator)
434
+ //if (get_current_user_id() == 1) return;
435
+ else if (is_404()) {
436
+ if (isset($this->options['reject_404'])) {
437
+ $cache_stop = true;
438
+ } else {
439
+ $file = $this->get_folder() . '/' . substr(get_option('home'), strpos(get_option('home'), '://') + 3) . '/404.html';
440
+
441
+ if (file_exists($file) && ($this->options['max_age'] == 0 || filemtime($file) > time() - $this->options['max_age'] * 3600)) {
442
+ header('Content-Type: text/html;charset=UTF-8');
443
+ // For some reason it seems more performant than readfile...
444
+ header('X-Hyper-Cache: hit,404');
445
+ echo file_get_contents($file);
446
+ die();
447
+ }
448
  }
449
+ }
450
+
451
+ if (!$cache_stop && substr($_SERVER['REQUEST_URI'], 0, strlen($home_root) + 4) == ($home_root . '/wp-')) {
452
+ $cache_stop = true;
453
+ }
454
+
455
+
456
+
457
+ // URLs to reject (exact)
458
+ if (!$cache_stop && isset($this->options['reject_uris_exact_enabled'])) {
459
+ if (is_array($this->options['reject_uris_exact'])) {
460
+ foreach ($this->options['reject_uris_exact'] as &$uri) {
461
+ if ($_SERVER['REQUEST_URI'] == $uri) {
462
+ $cache_stop = true;
463
+ break;
464
+ }
465
+ }
466
  }
467
  }
468
+
469
+ // URLs to reject
470
+ if (!$cache_stop && isset($this->options['reject_uris_enabled'])) {
471
+ if (is_array($this->options['reject_uris'])) {
472
+ foreach ($this->options['reject_uris'] as &$uri) {
473
+ if (strpos($_SERVER['REQUEST_URI'], $uri) === 0) {
474
+ $cache_stop = true;
475
+ break;
476
+ }
477
+ }
478
+ }
479
+ }
480
+
481
+ if (!$cache_stop && !empty($this->options['reject_old_posts']) && is_single()) {
482
+ global $post;
483
+ if (strtotime($post->post_date_gmt) < time() - 86400 * $this->options['reject_old_posts'])
484
+ return;
485
+ }
486
+
487
+ // If is not require to bypass the comment authors, remove the cookies so the page is generated without
488
+ // comment moderation noticies
489
+ if (!isset($this->options['reject_comment_authors'])) {
490
+ foreach ($_COOKIE as $n => $v) {
491
+ if (substr($n, 0, 14) == 'comment_author') {
492
+ unset($_COOKIE[$n]);
493
+ }
494
+ }
495
+ }
496
+
497
+ $this->ob_started = true;
498
+ ob_start('hyper_cache_callback');
499
  }
500
 
501
+ function post_folder($post_id) {
502
+ $url = get_permalink($post_id);
503
+ $parts = parse_url($url);
504
+ return $parts['host'] . hyper_cache_sanitize_uri($parts['path']);
 
505
  }
 
506
 
507
+ function remove_page($dir) {
508
+ if (HYPER_CACHE_LOG)
509
+ $this->log('Removing page: ' . $dir);
510
+ $dir = untrailingslashit($dir);
511
+ @unlink($dir . '/index.html');
512
+ @unlink($dir . '/index.html.gz');
513
+ @unlink($dir . '/index-https.html');
514
+ @unlink($dir . '/index-https.html.gz');
515
+ @unlink($dir . '/index-mobile.html');
516
+ @unlink($dir . '/index-mobile.html.gz');
517
+ @unlink($dir . '/index-https-mobile.html');
518
+ @unlink($dir . '/index-https-mobile.html.gz');
519
+
520
+ $this->remove_dir($dir . '/feed/');
521
+ // Pagination
522
+ $this->remove_dir($dir . '/page/');
523
+ }
524
 
525
+ function remove_dir($dir) {
526
+ if (HYPER_CACHE_LOG) {
527
+ $this->log('Removing dir: ' . $dir);
528
+ }
529
+ $dir = trailingslashit($dir);
530
+ $files = glob($dir . '*', GLOB_MARK);
531
+ if (!empty($files)) {
532
+ foreach ($files as &$file) {
533
+ if (substr($file, -1) == DIRECTORY_SEPARATOR)
534
+ $this->remove_dir($file);
535
+ else {
536
+ @unlink($file);
537
+ }
538
  }
539
  }
540
+ @rmdir($dir);
541
+ }
542
+
543
+ function hook_hyper_cache_clean() {
544
+ if (!isset($this->options['autoclean'])) {
545
+ return;
546
+ }
547
+ if (HYPER_CACHE_LOG) {
548
+ $this->log('Periodic cache cleaning start');
549
+ }
550
+ if ($this->options['max_age'] == 0) {
551
+ return;
552
+ }
553
+ $this->remove_older_than(time() - $this->options['max_age'] * 3600);
554
+ if (HYPER_CACHE_LOG) {
555
+ $this->log('Periodic cache cleaning stop');
556
+ }
557
+ }
558
+
559
+ function remove_older_than($time) {
560
+ $this->_remove_older_than($time, $this->get_folder() . '/');
561
  }
 
562
 
563
+ function _remove_older_than($time, $dir) {
564
+ $files = glob($dir . '*', GLOB_MARK);
565
+ if (!empty($files)) {
566
+ foreach ($files as &$file) {
567
+ if (substr($file, -1) == '/')
568
+ $this->_remove_older_than($time, $file);
569
+ else {
570
+ //$this->log($file . ' ' . ($time-filemtime($file)));
571
+ if (@filemtime($file) < $time) {
572
+ //$this->log('Removing ' . $file);
573
+ @unlink($file);
574
+ }
575
+ }
576
  }
577
  }
 
578
  }
579
+
580
+ function get_folder() {
581
+ if (empty($this->options['folder']))
582
+ return WP_CONTENT_DIR . '/cache/hyper-cache';
583
+ else
584
+ return $this->options['folder'];
585
+ }
586
+
587
+ function text_to_list($text) {
588
+ $list = array();
589
+ $items = explode("\n", str_replace(array("\n", "\r"), "\n", $text));
590
+ foreach ($items as &$item) {
591
+ $item = trim($item);
592
+ if ($item == '')
593
+ continue;
594
+ $list[] = $item;
595
+ }
596
+ return $list;
597
+ }
598
+
599
  }
600
 
601
+ /*
602
+ function hyper_cache_remove_protocol($buffer) {
603
+
604
+ $buffer = str_ireplace('"http://', '"//', $buffer);
605
+ $buffer = str_ireplace('\'http://', '\'//', $buffer);
606
+ return $buffer;
607
 
608
+ $parts = parse_url(get_home_url());
609
+ $buffer = str_ireplace('http://' . $parts['host'], '//' . $parts['host'], $buffer);
610
+ $buffer = str_ireplace('https://' . $parts['host'], '//' . $parts['host'], $buffer);
611
+ return $buffer;
612
 
613
+ }
614
 
615
+ */
 
 
 
 
 
 
 
 
616
 
617
+ function hyper_cache_cdn_callback($matches) {
618
+ //error_log($matches[1]);
619
+ $parts = parse_url($matches[2]);
620
+ //$return = $parts['scheme'] . '://' . $parts['host'] . $parts['path'];
621
+ $return = HyperCache::$instance->options['cdn_url'] . $parts['path'];
622
 
623
+ if (!empty($parts['query'])) {
624
+ $return .= '?' . $parts['query'];
625
+ }
626
+ return $matches[1] . $return . $matches[3];
627
  }
628
 
629
+ function hyper_cache_callback($buffer) {
630
+ global $cache_stop, $lite_cache, $hyper_cache_stop, $hyper_cache_group, $hyper_cache_is_mobile, $hyper_cache_gzip_accepted;
631
+
632
+ $buffer = trim($buffer);
633
+
634
+ if (strlen($buffer) == 0) {
635
+ return '';
636
+ }
637
+
638
+ $options = HyperCache::$instance->options;
639
+
640
+ // Replace the CDN Url
641
+ if (isset($options['cdn_enabled'])) {
642
+ $parts = parse_url(get_option('home'));
643
+ $base = quotemeta($parts['scheme'] . '://' . $parts['host']);
644
+ $base = quotemeta('http://' . $parts['host']);
645
+
646
+ $buffer = preg_replace_callback("#(<img.+src=[\"'])(" . $base . ".*)([\"'])#U", 'hyper_cache_cdn_callback', $buffer);
647
+ $buffer = preg_replace_callback("#(<script.+src=[\"'])(" . $base . ".*)([\"'])#U", 'hyper_cache_cdn_callback', $buffer);
648
+ $buffer = preg_replace_callback("#(<link.+href=[\"'])(" . $base . ".*)([\"'])#U", 'hyper_cache_cdn_callback', $buffer);
649
+ }
650
+
651
+ $buffer = apply_filters('cache_buffer', $buffer);
652
+
653
+ if ($cache_stop || $hyper_cache_stop) {
654
 
655
+ if (isset($options['gzip']) && $hyper_cache_gzip_accepted && function_exists('gzencode')) {
656
+ //error_log('dsfsdfsdfsdfsdffafasfsafdsa');
657
+ header('Cache-Control: private, max-age=0, no-cache, no-transform', false);
658
+ header('Vary: Accept-Encoding,User-Agent');
659
+ header('Content-Encoding: gzip');
660
+ header('X-Hyper-Cache: gzip on the fly', false);
661
+ return gzencode($buffer, 9);
662
+ }
663
+ return $buffer;
664
+ }
665
+
666
+ $uri = hyper_cache_sanitize_uri($_SERVER['REQUEST_URI']);
667
+
668
+ $lc_dir = HyperCache::$instance->get_folder() . '/' . strtolower($_SERVER['HTTP_HOST']) . $uri;
669
+
670
+ if ($hyper_cache_is_mobile) {
671
+ // Bypass (should no need since there is that control on advanced-cache.php)
672
+ if ($options['mobile'] == 2) {
673
+ if (isset($options['gzip']) && $hyper_cache_gzip_accepted && function_exists('gzencode')) {
674
+ header('Cache-Control: private, max-age=0, no-cache, no-transform', false);
675
+ header('Vary: Accept-Encoding,User-Agent');
676
+ header('Content-Encoding: gzip');
677
+ header('X-Hyper-Cache: mobile, gzip on the fly', false);
678
+ return gzencode($buffer, 9);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
679
  }
680
+ return $buffer;
 
681
  }
682
+ }
683
+
684
+ if (is_404()) {
685
+ $lc_file = HyperCache::$instance->get_folder() . '/' . strtolower($_SERVER['HTTP_HOST']) . '/404.html';
686
+ } else {
687
+ $lc_file = $lc_dir . '/index' . $hyper_cache_group . '.html';
688
+
689
+ if (!is_dir($lc_dir)) {
690
+ wp_mkdir_p($lc_dir);
691
+ }
692
+ }
693
+
694
+ if (!isset($options['reject_comment_authors']) && is_singular() && !is_feed() && !is_user_logged_in()) {
695
+ $script = '<script>';
696
+ $script .= 'function lc_get_cookie(name) {';
697
+ $script .= 'var c = document.cookie;';
698
+ $script .= 'if (c.indexOf(name) != -1) {';
699
+ $script .= 'var x = c.indexOf(name)+name.length+1;';
700
+ $script .= 'var y = c.indexOf(";",x);';
701
+ $script .= 'if (y < 0) y = c.length;';
702
+ $script .= 'return decodeURIComponent(c.substring(x,y));';
703
+ $script .= '} else return "";}';
704
+ $script .= 'if ((d = document.getElementById("commentform")) != null) { e = d.elements;';
705
+ $script .= 'var z = lc_get_cookie("comment_author_email_' . COOKIEHASH . '");';
706
+ $script .= 'if (z != "") e["email"].value = z;';
707
+ $script .= 'z = lc_get_cookie("comment_author_' . COOKIEHASH . '");';
708
+ $script .= 'if (z != "") e["author"].value = z.replace(/\+/g, " ");';
709
+ $script .= 'z = lc_get_cookie("comment_author_url_' . COOKIEHASH . '");';
710
+ $script .= 'if (z != "") e["url"].value = z;';
711
+ $script .= '}';
712
+ $script .= '</script>';
713
+ $x = strrpos($buffer, '</body>');
714
+ if ($x) {
715
+ $buffer = substr($buffer, 0, $x) . $script . '</body></html>';
716
+ } else {
717
+ $buffer .= $script;
718
  }
719
  }
 
 
 
720
 
721
+ file_put_contents($lc_file, $buffer . '<!-- hyper cache ' . date('Y-m-d h:i:s') . ' -->');
722
+
723
+ // Saves the gzipped version
724
+ if (isset($options['gzip'])) {
725
+ $gzf = gzopen($lc_file . '.gz', 'wb9');
726
+ gzwrite($gzf, $buffer . '<!-- hyper cache gzip ' . date('Y-m-d h:i:s') . ' -->');
727
+ gzclose($gzf);
728
+ }
729
  return $buffer;
730
  }
731
+
732
+ if (!function_exists('hyper_cache_sanitize_uri')) {
733
+
734
+ function hyper_cache_sanitize_uri($uri) {
735
+ if (HYPER_CACHE_LOG) {
736
+ $this->log('URI: ' . $uri);
737
+ }
738
+ $uri = preg_replace('/[^a-zA-Z0-9\/\-_]+/', '_', $uri);
739
+ $uri = preg_replace('/\/+/', '/', $uri);
740
+ //$uri = rtrim($uri, '.-_/');
741
+ if (empty($uri) || $uri[0] != '/') {
742
+ $uri = '/' . $uri;
743
+ }
744
+ if (strlen($uri) > 1 && substr($uri, -1, 1) == '/') {
745
+ $uri = rtrim($uri, '/') . '_';
746
+ }
747
+ if (HYPER_CACHE_LOG) {
748
+ $this->log('Sanitized URI: ' . $uri);
749
+ }
750
+ return $uri;
751
+ }
752
+
753
+ }
readme.txt CHANGED
@@ -1,69 +1,45 @@
1
  === Hyper Cache ===
2
- Tags: cache,chaching,speed,performance,super cache,wp cache,optimization,staticization
3
  Requires at least: 2.5
4
- Tested up to: 3.8.1
5
  Stable tag: trunk
6
  Donate link: http://www.satollo.net/donations
 
7
 
8
- Hyper Cache is flexible and easy to configure cache system for WordPress.
9
 
10
  == Description ==
11
 
12
- Hyper Cache is a new cache system for WordPress, specifically written for
13
- people which have their blogs on low resources hosting provider
14
- (cpu and mysql). It works even with hosting based on Microsoft IIS (just tuning
15
- the configuration). It has three invalidation method: all the cache, single post
16
- based and nothing but with control on home and archive pages invalidation.
17
-
18
- It has not yet tested for multisite configuration (WordPress 3.0 feature).
19
-
20
- An alternative to Hyper Cache is Lite Cache which probably is simpler to configure but
21
- with the same performace level. Lite Cache is able to cache pages for commenters, too,
22
- which are usually excluded from other type of caches.
23
-
24
- Some features:
25
-
26
- * compatible with the plugin wp-pda which enables a blog to be *accessible from mobile devices*
27
- * manages (both) *plain and gzip compressed pages*
28
- * autoclean system to reduce the disk usage
29
- * 404 caching
30
- * redirects caching
31
- * easy to configure
32
- * Global Translator compatibility
33
- * Last Modified http header compatibility with 304 responses
34
- * compressed storage to reduce the disk space usage
35
- * agents, urls and cookies based rejection configurable
36
- * easy to integrated with other plugins
37
-
38
- More can be read on the [official plugin page](http://www.satollo.net/plugins/hyper-cache) and write me
39
- if you have issues to info@satollo.net.
40
-
41
- New contributors policy: since in the pas I had problem with link to contributors sites, I removed
42
- them but I would like to add a reference to profile pages of contributors on WordPress, Twitter,
43
- Facebook, Google+. Those links should be safe.
44
-
45
- **Check out my other plugins**:
46
-
47
- * [Post Layout](http://www.satollo.net/plugins/post-layout "Post Layout WordPress plugin: the easy way to enrich your posts")
48
- * [Comment Notifier](http://www.satollo.net/plugins/comment-notifier "Keep your blog discussions on fire")
49
- * [Feed Layout](http://www.satollo.net/plugins/feed-layout "Feed Layout WordPress plugin: the easy way to enrich your feed contents")
50
- * [Dynatags](http://www.satollo.net/plugins/dynatags "Dynatags WordPress plugin: Create your own custom short tag in seconds")
51
- * [Header and Footer](http://www.satollo.net/plugins/header-footer)
52
- * [Newsletter](http://www.satollo.net/plugins/newsletter)
53
 
54
- Thanks to:
55
 
56
- * Amaury Balmer for internationalization and other modifications
57
- * Frank Luef for german translation
58
- * HypeScience, Martin Steldinger, Giorgio Guglielmino for test and bugs submissions
59
- * Ishtiaq to ask me about compatibility with wp-pda
60
- * Gene Steinberg to ask for an autoclean system
61
- * Marcis Gasun (fatcow.com) for Bielorussian translation
62
- * many others I don't remember
63
- * Florian Höch
64
- * Quentin
65
- * Mckryak
66
- * Tommy Tung alias Ragnarok
 
 
 
 
 
 
 
 
 
 
67
 
68
 
69
  == Installation ==
@@ -72,109 +48,109 @@ Thanks to:
72
  2. Go into the WordPress admin interface and activate the plugin
73
  3. Optional: go to the options page and configure the plugin
74
 
75
- Before upgrade DEACTIVATE the plugin and then ACTIVATE and RECONFIGURE!
76
-
77
  == Frequently Asked Questions ==
78
 
79
- See the [Hyper Cache official page](http://www.satollo.net/plugins/hyper-cache)
80
-
81
- == Screenshots ==
82
-
83
- No screenshots are available.
84
-
85
- == Changelog ==
86
 
87
- = 2.9.1.6 =
88
-
89
- * Fixed some debug noticies
90
 
91
- = 2.9.1.5 =
92
 
93
- * gzip path by Onno Molenkamp
94
 
95
- = 2.9.1.4 =
96
 
97
- * Added support for the static front page
98
 
99
- = 2.9.1.3 =
100
 
101
- * Added a check to remove a warning
102
 
103
- = 2.9.1.2 =
104
 
105
- * Fixed a file creation on activation
 
 
106
 
107
- = 2.9.1.1 =
108
 
109
- * fixed the new WP_CONTENT_DIR usage
110
 
111
- = 2.9.1.0 =
112
 
113
- * https fix by (http://foliovision.com)
114
- * fixed the WP_CONTENT_DIR usage
115
- * some "undefined index" notices because people and PHP pretend that an associative array should be checked for a key before asking for its content... (terrible and inefficient)
116
- * cache path save with single quote to avoid problem with windows paths
117
 
118
- = 2.9.0.3 =
119
 
120
- * potential duplicated content fix
121
 
122
- = 2.9.0.2 =
123
 
124
- * added French translation
 
 
 
 
 
 
125
 
126
- = 2.9.0.1 =
127
 
128
- * small fix for trailing slashes
129
 
130
- = 2.9.0 =
131
 
132
- All patches listed below are by Florian Höch (as soon has his blog will be online I'll give a link to it)
 
 
133
 
134
- * compression on the fly option when browser accept compressed data but is set to not store it
135
- * added the Vary header
136
- * fixed the Cache-Control/Expires and Last-Modified headers
137
- * remove the trailing slash for permalink (even if WordPress should send a redirect and Hyper Cache should already intercept it)
138
- * added a few safety checks for gzencode/decode functions in cache.php
139
- * new configuration option: allow browser caching
140
- * allow browser to bypass the server-side cache
141
- * some options panel fixes and improvements
142
 
143
- = 2.8.9 =
 
 
 
144
 
145
- * TW and CN translations changed (by Ragnarok)
146
 
147
- = 2.8.8 =
 
 
148
 
149
- * Internationalization fixes
150
 
151
- = 2.8.7 =
 
152
 
153
- * Admin panel fixes
154
- * Introduced the text domain (re-trnslation needed)
155
 
156
- = 2.8.6 =
157
 
158
- * Chinese translation by Ragnarok!
159
 
160
- = 2.8.5 =
 
161
 
162
- * fixed the "is_home" warning issue
163
 
164
- = 2.8.4 =
 
 
165
 
166
- * fixed the single page invalidation
167
 
168
- = 2.8.3 =
 
 
169
 
170
- * fixed the clean from admin panel
171
 
172
- = 2.8.2 =
173
 
174
- * moved the cache folder to wp-content/cache/hyper-cache
175
- * configuration panel has no more expandable sections
176
- * the cached pages are no more deleted on update
177
 
178
- = 2.8.1 =
 
 
179
 
180
- * fixed the Last Modified header (thanks Yuri C.)
1
  === Hyper Cache ===
2
+ Tags: cache,performance,staticizer,apache,htaccess,tuning,speed,bandwidth,optimization,tidy,gzip,compression,server load,boost
3
  Requires at least: 2.5
4
+ Tested up to: 4.1
5
  Stable tag: trunk
6
  Donate link: http://www.satollo.net/donations
7
+ Contributors: satollo
8
 
9
+ Hyper Cache is a performant and easy to configure cache system for WordPress.
10
 
11
  == Description ==
12
 
13
+ Hyper Cache is a cache plugin specifically written to get the maximum
14
+ speed for your WordPress blog. It can be used in low resources hosting as well
15
+ on high end servers.
16
+
17
+ Hyper Cache is purely PHP and works on every blog: no complex configurations are need
18
+ and when you deactivate it no stale setting are left floating around.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
19
 
20
+ Short list of features:
21
 
22
+ * Mobile aware: double cache for desktop and mobile site versions
23
+ * Mobile theme switch option: change the theme on mobile device detection
24
+ * Able to serve expired pages to bots to increase the perceived speed by bots
25
+ * Manages compression even on the fly for non cached pages
26
+ * Lots of configurable bypasses: matching cookies, matching urls, user agents, ...
27
+ * Comments aware: is able to serve cached pages even to visitors who commented the blog (perfect for
28
+ blog with great readers paritipation)
29
+ * Cache folder can be moved outside your blog space to exclude it from backups
30
+ * Controls over cache cleaning on blog events (post edited, comments, ...)
31
+ * Autoclean to controls the cache used disk space
32
+ * CDN support (experimental)
33
+ * Other special options
34
+ * Response header signature to check the working status
35
+
36
+ More can be read on the [Hyper Cache official page](http://www.satollo.net/plugins/hyper-cache).
37
+
38
+ Other plugins by Stefano Lissa:
39
+
40
+ * [Newsletter](http://www.thenewsletterplugin.com)
41
+ * [Header and Footer](http://www.satollo.net/plugins/header-footer)
42
+ * [Include Me](http://www.satollo.net/plugins/include-me)
43
 
44
 
45
  == Installation ==
48
  2. Go into the WordPress admin interface and activate the plugin
49
  3. Optional: go to the options page and configure the plugin
50
 
 
 
51
  == Frequently Asked Questions ==
52
 
53
+ See the [Hyper Cache official page](http://www.satollo.net/plugins/hyper-cache) or
54
+ the [Hyper Cache official forum](http://www.satollo.net/forums/forum/hyper-cache-plugin).
 
 
 
 
 
55
 
56
+ == Screenshots ==
 
 
57
 
58
+ 1. The main configuration panel
59
 
60
+ 2. Configuration of bypasses (things you want/not want to be cached)
61
 
62
+ 3. Mobile devices configuration
63
 
64
+ == Changelog ==
65
 
66
+ = 3.1.8 =
67
 
68
+ * Fixed the comment awaiting notification cached
69
 
70
+ = 3.1.7 =
71
 
72
+ * Added experimental support for CDN
73
+ * Added on-the-fly compression
74
+ * Fixed some headers
75
 
76
+ = 3.1.6 =
77
 
78
+ * Fixed the post trashing detection
79
 
80
+ = 3.1.5 =
81
 
82
+ * Tidy option removed
 
 
 
83
 
84
+ = 3.1.4 =
85
 
86
+ * Fixed an error log always active
87
 
88
+ = 3.1.3 =
89
 
90
+ * Fixed the agents bypass
91
+ * Added the "serve expired pages to bots" options
92
+ * Added the readfile/file_get_contents switch
93
+ * Fixed the draft saving triggering a cache invalidation
94
+ * Added distinct cache clean for home and archives
95
+ * Added debug logging when HYPER_CACHE_LOG is true (define it on wp-config.php)
96
+ * Fixed the + sign on comment author
97
 
98
+ = 3.1.2 =
99
 
100
+ * Fixed comment author cookie clean
101
 
102
+ = 3.1.1 =
103
 
104
+ * fixed a PHP warning on options panel when clearing an empty cache
105
+ * pot file added
106
+ * possible fix for after update messages that saving is needed
107
 
108
+ = 3.1.0 =
 
 
 
 
 
 
 
109
 
110
+ * Fixed the cookie bypass
111
+ * Removed a debug notice
112
+ * Added HTTPS separated cache
113
+ * Improved code performance
114
 
115
+ = 3.0.6 =
116
 
117
+ * readme.txt fix
118
+ * WP 4.0 compatibility check
119
+ * Fixed invalidation on draft saving
120
 
121
+ = 3.0.5 =
122
 
123
+ * Fixed analysis of URL with commas and dots
124
+ * Improved the categories invalidation with /%category% permalink
125
 
126
+ = 3.0.4 =
 
127
 
128
+ * Help texts fixed
129
 
130
+ = 3.0.3 =
131
 
132
+ * Fixed the autoclean when max cached page age is set to 0
133
+ * Changed a little the mobile agent list
134
 
135
+ = 3.0.2 =
136
 
137
+ * Added the browser caching option
138
+ * Fixed a cache header
139
+ * Fixed warning on cache size if empty
140
 
141
+ = 3.0.1 =
142
 
143
+ * Short description fix on plugin.php
144
+ * Forum link fix on readme.txt
145
+ * More help on comment authors option
146
 
147
+ = 3.0.0 =
148
 
149
+ * Totally rewritten to include the Lite Cache features
150
 
151
+ = To Do =
 
 
152
 
153
+ * Register an action to clean the cache by other plugin
154
+ * Separated cache for https
155
+ * Invalidation of categories paths when /%category%/%postname% is used
156