ins0 / zf2-snippster
ZF2 Snipped 模块,用于生成大量视图作为片段,降低应用响应时间
dev-master
2014-10-15 12:11 UTC
Requires
- php: >=5.3.3
Requires (Dev)
- phpunit/phpunit: 3.7.*
- zendframework/zendframework: 2.*
This package is auto-updated.
Last update: 2024-09-11 17:05:10 UTC
README
ZF2 模块,将大量视图保存为预渲染的片段到缓存中,降低应用请求响应时间
待办事项
- 测试
- 视图助手
- 控制器助手
快速开始
通过 Composer 安装
在 composer.json
文件的 require
键中添加以下内容
"ins0/zf2-snippster": "dev-master"
运行 Composer update 命令
$ composer update
缓存适配器
编辑 module.config.php 来设置您首选的缓存适配器,snippster 与 redis 或 memcache 配合得很好
'snippster_configuration' => array(
'cache' => array(
'adapter' => 'Zend\Cache\Storage\Adapter\Redis',
'options' => array(
'server' => array(
'host' => '127.0.0.1',
'port' => 6379,
)
)
),
),
示例
创建一个 zf2 控制台路由,并将 crontab 指向该路由以预生成应用中使用的所有视图
生成片段
config.module.php
'view_manager' => array(
'template_map' => array(
'snippster-product-list-item' => __DIR__ . '/../view/snippster/example/product/list-item.phtml',
)
)
ConsoleExampleController.php
function snippsterCreateExampleProductViews()
{
/** @var \Snippster\Service\Snippster $snippster */
$snippster = $this->getServiceLocator()->get('Snippster');
$products = array(
array('id' => 1, 'name' => 'Test Product1'),
array('id' => 2, 'name' => 'Test Product2'),
array('id' => 3, 'name' => 'Test Product3'),
array('id' => 4, 'name' => 'Test Product4'),
array('id' => 5, 'name' => 'Test Product5'),
array('id' => 6, 'name' => 'Test Product6'),
);
foreach($products as $product)
{
$viewSnippet = new \Snippster\Entity\ViewSnippet('product-list-item', $product['id']);
$viewSnippet->setTemplate('snippster-product-list-item');
$viewSnippet->setVariables($product);
$snippster->saveViewSnippet($viewSnippet);
}
}
snippster/example/product/list-item.phtml
<div class="product">
<h1><?php echo $this->escapeHtml($this->name); ?>
<hr>
More heavy stuff to build this view
</div>
请求片段
控制器请求视图片段示例
function productListAction()
{
/** @var \Snippster\Service\Snippster $snippster */
$snippster = $this->getServiceLocator()->get('Snippster');
$html = $snippster->getViewSnippet('product-list-item', 4);
// get pre rendered product html - do stuff
}