summaryrefslogtreecommitdiff
path: root/lib/exe/js.php
diff options
context:
space:
mode:
authorAndreas Gohr <andi@splitbrain.org>2009-01-22 22:50:10 +0100
committerAndreas Gohr <andi@splitbrain.org>2009-01-22 22:50:10 +0100
commit98bda4fdc7bccbef714bd6480528804bcd3f5586 (patch)
tree7f26270babd142e6024f2988e5c8f489dd483a49 /lib/exe/js.php
parentd578eae7de9837d20a73ae2f83f7bf3d346d7ed5 (diff)
downloadrpg-98bda4fdc7bccbef714bd6480528804bcd3f5586.tar.gz
rpg-98bda4fdc7bccbef714bd6480528804bcd3f5586.tar.bz2
fixed multiple gzip/sendfile problems in css and js dispatchers FS#1571
- Avoid double compression when gzip_output is enabled - Only compress when gzip_output is enabled - Do not use x-sendfile for compressed content (content-encoding is not supported) - Make sure the script terminates after using x-sendfile - Moved gzip browser support check to init.php darcs-hash:20090122215010-7ad00-765765d353ff78df5b8704086328c5c699bbe7e0.gz
Diffstat (limited to 'lib/exe/js.php')
-rw-r--r--lib/exe/js.php19
1 files changed, 6 insertions, 13 deletions
diff --git a/lib/exe/js.php b/lib/exe/js.php
index f3acc7491..7746edcd9 100644
--- a/lib/exe/js.php
+++ b/lib/exe/js.php
@@ -9,6 +9,7 @@
if(!defined('DOKU_INC')) define('DOKU_INC',dirname(__FILE__).'/../../');
if(!defined('NOSESSION')) define('NOSESSION',true); // we do not use a session or authentication here (better caching)
if(!defined('NL')) define('NL',"\n");
+if(!defined('DOKU_DISABLE_GZIP_OUTPUT')) define('DOKU_DISABLE_GZIP_OUTPUT',1); // we gzip ourself here
require_once(DOKU_INC.'inc/init.php');
require_once(DOKU_INC.'inc/pageutils.php');
require_once(DOKU_INC.'inc/io.php');
@@ -66,14 +67,10 @@ function js_out(){
if($conf['allowdebug']) header("X-CacheUsed: $cache");
// finally send output
- if (http_accepts_gzip() && http_gzip_valid($cache)) {
+ if ($conf['gzip_output'] && http_gzip_valid($cache)) {
header('Vary: Accept-Encoding');
header('Content-Encoding: gzip');
- if (!http_sendfile($cache.'.gz')) readfile($cache.".gz");
-# } else if (http_accepts_deflate()) {
-# header('Vary: Accept-Encoding');
-# header('Content-Encoding: deflate');
-# readfile($cache.".zip");
+ readfile($cache.".gz");
} else {
if (!http_sendfile($cache)) readfile($cache);
}
@@ -97,7 +94,7 @@ function js_out(){
// load JS strings form plugins
$lang['js']['plugins'] = js_pluginstrings();
-
+
// load JS specific translations
$json = new JSON();
echo 'LANG = '.$json->encode($lang['js']).";\n";
@@ -163,14 +160,10 @@ function js_out(){
copy($cache,"compress.zlib://$cache.gz");
// finally send output
- if (http_accepts_gzip()) {
+ if ($conf['gzip_output']) {
header('Vary: Accept-Encoding');
header('Content-Encoding: gzip');
print gzencode($js,9,FORCE_GZIP);
-# } else if (http_accepts_deflate()) {
-# header('Vary: Accept-Encoding');
-# header('Content-Encoding: deflate');
-# print gzencode($js,9,FORCE_DEFLATE);
} else {
print $js;
}
@@ -250,7 +243,7 @@ function js_pluginscripts(){
/**
* Return an two-dimensional array with strings from the language file of each plugin.
*
- * - $lang['js'] must be an array.
+ * - $lang['js'] must be an array.
* - Nothing is returned for plugins without an entry for $lang['js']
*
* @author Gabriel Birke <birke@d-scribe.de>