proklung/custom-request-responser-bundle

自定义 Symfony 的请求响应工具

1.0.3 2021-05-12 12:17 UTC

This package is auto-updated.

Last update: 2024-09-12 19:35:48 UTC


README

内部

安装

composer.json

    "repositories": [
        {
            "type": "git",
            "url": "https://github.com/proklung/custom.request.responser.bundle"
        }
    ]
composer require proklung/custom-request-responser-bundle

配置示例

local/packages/custom_request_responser.yaml (或 /config/packages/custom_request_responser.yaml 用于 WordPress) 地址。

custom_request_responser:
  defaults:
    enabled: true

  # True - middleware запрещено, false - нет.
  # По умолчанию false.
  middlewares_disabled:
    custom_request_responser.middleware.inline_css: true
    custom_request_responser.middleware.dns_prefetch: true
    custom_request_responser.middleware.remove_comments: true
    custom_request_responser.middleware.collapse_whitespace: true
    custom_request_responser.middleware.remove_quotes: true
    custom_request_responser.middleware.elide_attributes: true

  # Middleware, запускаемые на контент Битрикса.
  # True - middleware запрещено, false - нет.
  # По умолчанию false.
  bitrix_middlewares_disabled:
    custom_request_responser.middleware.inline_css: false
    custom_request_responser.middleware.dns_prefetch: false
    custom_request_responser.middleware.remove_comments: false
    custom_request_responser.middleware.collapse_whitespace: false
    custom_request_responser.middleware.remove_quotes: false
    custom_request_responser.middleware.elide_attributes: false

  headers:
    # Apply a CSP on all the responses
    - Content-Security-Policy: default-src 'self'

    - name: Cache-Control
      value: max-age=31536000, public
      condition: response.headers.get('Content-Type') matches '/^html/'

组件

kernel.response 处理器

  • custom_request_responser.logger_response - 记录请求 & 响应
  • custom_request_responser.robots - 管理路由的索引
  • custom_request_responser.compress_response - 对 txt/html 类型的响应进行压缩
  • custom_request_responser.set.headers

响应中间件

  • custom_request_responser.middleware.dns_prefetch - 在 HEAD 中注入标签以启用浏览器的 DNS 预取
  • custom_request_responser.middleware.remove_comments - 删除 HTML、JS 和 CSS 注释
  • custom_request_responser.middleware.collapse_whitespace - 通过删除不必要的空白减少 HTML 文件中传输的字节数
  • custom_request_responser.middleware.remove_quotes - 从 HTML 属性中删除不必要的引号
  • custom_request_responser.middleware.elide_attributes - 当指定值等于默认值时从标签中删除属性
  • custom_request_responser.middleware.inline_css - 通过将 CSS 移动到头部将标签的 inline "style" 属性转换为类

标记为 response.middleware 并应继承自 AbstractPageSpeed

自定义处理器的示例 - 是否需要索引路由

use Prokl\CustomRequestResponserBundle\Services\Contracts\IndexRouteManagerInterface;
use Symfony\Component\HttpFoundation\Request;

class AdminRouteProcessor implements IndexRouteManagerInterface
{
    /**
     * @inheritDoc
     */
    public function shouldIndex(Request $request): bool
    {
        $url = $request->getPathInfo();

        // Не индексировать страницы, в url которых встречается /api/.
        if (stripos($url, '/api/') !== false) {
            return false;
        }

        return true;
    }
}