Оптимизация для Google PageSpeed ​​Insights: кэширование и сжатие

У меня есть PHP, который автоматически сжимает файл CSS.
Его имя minified.css.php

Для всех, кто заинтересован, вот как это выглядит:

<?php
header('Content-type: text/css');
ob_start("compress");

function compress( $minify ) {
// remove comments
$minify = preg_replace( "/\/\*.+?\*\//", '', $minify );

// remove tabs, spaces, newlines, etc.
$minify = str_replace( array("\rn", "\r", "\n", "\t", '  ', '    ', '    '), '', $minify );

// brackets
$minify = str_replace( array(' {', '{ '), '{', $minify );
$minify = str_replace( array(' }', '} '), '}', $minify );
$minify = str_replace( array(' (', '( '), '(', $minify );
$minify = str_replace( array(' )', ') '), ')', $minify );

// (semi)colons
$minify = str_replace( array(' ;', '; '), ';', $minify );
$minify = str_replace( array(' :', ': '), ':', $minify );

return $minify;
}

/* css files for combining */
include(getcwd().'/style.css');

ob_end_flush();

Но Google хочет, чтобы он был спущен, а также добавил срок годности. Соответствующий раздел в моем .htaccess выглядит так:

<IfModule mod_deflate.c>
Addtype font/truetype .ttf

AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
AddOutputFilterByType DEFLATE font/truetype
</IfModule>

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 0 month"
ExpiresByType text/css "access plus 1 month"
ExpiresByType application/json "access plus 0 seconds"ExpiresByType application/xml "access plus 0 seconds"ExpiresByType text/xml "access plus 0 seconds"
ExpiresByType image/x-icon "access plus 1 week"
ExpiresByType text/x-component "access plus 1 month"
ExpiresByType text/html "access plus 0 seconds"
ExpiresByType application/javascript "access plus 1 month"
ExpiresByType application/x-web-app-manifest+json "access plus 0 seconds"ExpiresByType text/cache-manifest "access plus 0 seconds"
ExpiresByType audio/ogg "access plus 1 month"ExpiresByType image/gif "access plus 1 month"ExpiresByType image/jpeg "access plus 1 month"ExpiresByType image/png "access plus 1 month"ExpiresByType video/mp4 "access plus 1 month"ExpiresByType video/ogg "access plus 1 month"ExpiresByType video/webm "access plus 1 month"
ExpiresByType application/atom+xml "access plus 1 hour"ExpiresByType application/rss+xml "access plus 1 hour"
ExpiresByType application/font-woff "access plus 1 year"ExpiresByType application/vnd.ms-fontobject "access plus 1 month"ExpiresByType application/x-font-ttf "access plus 1 month"ExpiresByType font/opentype "access plus 1 month"ExpiresByType image/svg+xml "access plus 1 month"</IfModule>

Какие строки мне нужно добавить, чтобы сделать minified.css.php кэшируемый + срок годности?

Изменить: Использовать заголовок minified.css.php включить кэширование.

header("Cache-Control: max-age=29030400");
header("Cache-Control: public", false);

Но все же проблема сжатия существует.

1

Решение

Это файл php, просто добавьте тип MIME для php:

<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE  application/x-httpd-php
</IfModule>

<IfModule mod_expires.c>
ExpiresByType application/x-httpd-php "access plus 1 month"</IfModule>
2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]