public function showAssetPackageSizesAction() { $a = new Kwf_Util_Build_Types_Assets(); $packages = $a->getAllPackages(); $langs = $a->getAllLanguages(); $exts = array('js', 'defer.js', 'css'); foreach ($packages as $p) { $depName = $p->getDependencyName(); $language = $langs[0]; foreach ($exts as $extension) { $cacheId = Kwf_Assets_Dispatcher::getCacheIdByPackage($p, $extension, $language); $cacheContents = Kwf_Assets_BuildCache::getInstance()->load($cacheId); echo "{$depName} "; $h = new Kwf_View_Helper_FileSize(); echo "{$extension} size: " . $h->fileSize(strlen(gzencode($cacheContents['contents'], 9, FORCE_GZIP))); echo "\n"; } } $d = Kwf_Assets_Package_Default::getDefaultProviderList()->findDependency('Frontend'); foreach ($d->getFilteredUniqueDependencies('text/javascript') as $i) { if ($i instanceof Kwf_Assets_Dependency_File && $i->getType() == 'ext2') { echo "\n[WARNING] Frontend text/javascript contains ext2\n"; echo "To improve frontend performance all ext2 dependencies should be moved to defer\n\n"; break; } } exit; }
public function countCssSelectorsAction() { $a = new Kwf_Util_Build_Types_Assets(); $langs = $a->getAllLanguages(); $packages = $a->getAllPackages(); foreach ($packages as $p) { $c = $p->getBuildContents('text/css', $langs[0]); $count = Kwf_Assets_Util_CssSelectorCount::count($c); echo $p->getDependency() . ': ' . $count . " rules\n"; } exit; }
private static function _clearAssetsAll($fileType = null) { if (!$fileType) { self::_clearAssetsAll('js'); self::_clearAssetsAll('defer.js'); self::_clearAssetsAll('css'); self::_clearAssetsAll('printcss'); return; } $fileNames = array('cache/assets/output-cache-ids-' . $fileType, 'build/assets/output-cache-ids-' . $fileType); foreach ($fileNames as $fileName) { if (file_exists($fileName)) { $cacheIds = file($fileName); unlink($fileName); foreach ($cacheIds as $cacheId) { $cacheId = trim($cacheId); echo $cacheId; if (Kwf_Assets_Cache::getInstance()->remove($cacheId)) { echo " [DELETED]"; } if (Kwf_Assets_BuildCache::getInstance()->remove($cacheId)) { echo " [build DELETED]"; } if (Kwf_Cache_SimpleStatic::_delete(array('as_' . $cacheId . '_gzip', 'as_' . $cacheId . '_deflate'))) { echo " [gzip DELETED]"; } if (Kwf_Assets_Cache::getInstance()->remove($cacheId . '_map')) { echo " [map DELETED]"; } if (Kwf_Assets_BuildCache::getInstance()->remove($cacheId . '_map')) { echo " [build map DELETED]"; } if (Kwf_Cache_SimpleStatic::_delete(array('as_' . $cacheId . '_map_gzip', 'as_' . $cacheId . '_map_deflate'))) { echo " [map_gzip DELETED]"; } echo "\n"; } } } $fileName = 'build/assets/package-max-mtime-' . $fileType; if (file_exists($fileName)) { $cacheIds = file($fileName); unlink($fileName); foreach ($cacheIds as $cacheId) { $cacheId = trim($cacheId); echo $cacheId; if (Kwf_Assets_BuildCache::getInstance()->remove($cacheId)) { echo " [DELETED]"; } echo "\n"; } } $a = new Kwf_Util_Build_Types_Assets(); $a->flagAllPackagesOutdated($fileType); self::_informDuckcast($fileType); }
private static function _clearAssetsAll($fileType = null) { if (!$fileType) { self::_clearAssetsAll('js'); self::_clearAssetsAll('css'); return; } $fileNames = array('cache/assets/output-cache-ids-' . $fileType, 'build/assets/output-cache-ids-' . $fileType); $assetsCacheIds = array(); $assetsBuildCacheIds = array(); $simpleStaticCacheIds = array(); foreach ($fileNames as $fileName) { if (file_exists($fileName)) { $cacheIds = file($fileName); unlink($fileName); foreach ($cacheIds as $cacheId) { $cacheId = trim($cacheId); echo $cacheId . "\n"; $assetsCacheIds[] = $cacheId; $assetsBuildCacheIds[] = $cacheId; $simpleStaticCacheIds[] = 'as_' . $cacheId . '_gzip'; $simpleStaticCacheIds[] = 'as_' . $cacheId . '_deflate'; $assetsCacheIds[] = $cacheId . '_map'; $assetsBuildCacheIds[] = $cacheId . '_map'; $simpleStaticCacheIds[] = 'as_' . $cacheId . '_map_gzip'; $simpleStaticCacheIds[] = 'as_' . $cacheId . '_map_deflate'; } } } if ($assetsCacheIds) { Kwf_Assets_Cache::getInstance()->remove($assetsCacheIds); } if ($assetsBuildCacheIds) { Kwf_Assets_BuildCache::getInstance()->remove($assetsBuildCacheIds); } if ($simpleStaticCacheIds) { Kwf_Cache_SimpleStatic::_delete($simpleStaticCacheIds); } $a = new Kwf_Util_Build_Types_Assets(); $a->flagAllPackagesOutdated($fileType); self::_informDuckcast($fileType); if ($fileType == 'css') { self::_clearAssetsAll('0.css'); self::_clearAssetsAll('1.css'); self::_clearAssetsAll('ie8.css'); } if ($fileType == 'js') { self::_clearAssetsAll('defer.js'); } }
private function _buildOutputForUrl($url) { Kwf_Util_MemoryLimit::set(768); class_exists('Kwf_Trl'); //required because setup doesn't load Trl.php before dispatching assets $param = explode('/', $url); if (count($param) != 4) { throw new Kwf_Exception_NotFound(); } $dependencyClass = $param[0]; $dependencyParams = $param[1]; $language = $param[2]; $extension = $param[3]; if (!class_exists($dependencyClass)) { throw new Kwf_Exception_NotFound(); } if (!is_instance_of($dependencyClass, 'Kwf_Assets_Interface_UrlResolvable')) { throw new Kwf_Exception_NotFound(); } //build whole assets dependency tree //required for eg. Modernizr to pick up all required tests $buildType = new Kwf_Util_Build_Types_Assets(); $packages = $buildType->getAllPackages(); $providers = array(); foreach ($packages as $p) { foreach ($p->getProviderList()->getProviders() as $provider) { if (!in_array($provider, $providers)) { $providers[] = $provider; $provider->initialize(); } } } foreach ($packages as $p) { $p->getDependency()->getRecursiveDependencies(); } $package = call_user_func(array($dependencyClass, 'fromUrlParameter'), $dependencyClass, $dependencyParams); if (!$package instanceof Kwf_Assets_Package) { throw new Kwf_Exception_NotFound(); } return $package->getUrlContents($extension, $language); }