Làm thế nào một người có thể thực sự vô hiệu hóa bộ nhớ đệm Twig để phát triển? [đóng cửa]


7

Tôi đã làm theo các hướng dẫn sau để tắt bộ nhớ đệm Twig:

  1. Sao chép và đổi tên các trang web / example.sinstall.local.php thành các trang web / default / settings.local.php

    $ cp sites/example.settings.local.php sites/default/settings.local.php
  2. Mở tệp settings.php trong trang web / mặc định và bỏ ghi chú những dòng này:

     if (file_exists(__DIR__ . '/settings.local.php')) {    
       include __DIR__ . '/settings.local.php';  
     }
    

    Điều này sẽ bao gồm tệp cài đặt cục bộ như một phần của tệp cài đặt của Drupal.

  3. Mở settings.local.php và thay đổi thành TRUE

    $config['system.performance']['css']['preprocess'] = FALSE;
    $config['system.performance']['js']['preprocess'] = FALSE;
    
  4. Bỏ ghi chú những dòng này là settings.local.php để Vô hiệu hóa bộ đệm kết xuất và Vô hiệu hóa Bộ đệm ẩn Trang động

    $settings['cache']['bins']['render'] = 'cache.backend.null';
    $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; 
    

    Nếu bạn không muốn cài đặt các mô-đun và chủ đề thử nghiệm, hãy đặt theo FALSE

    $settings['extension_discovery_scan_tests'] = TRUE;
  5. Mở Development.service.yml trong thư mục trang web và thêm khối sau (để tắt twig cache)

    parameters:   
      twig.config:
        debug : true
        auto_reload: true
        cache: false
    

Tôi đã kiểm tra gấp đôi và gấp ba, tất cả các thay đổi đã được áp dụng chính xác theo các điều trên. Nhưng không có gì thay đổi, tôi vẫn cần xây dựng lại bộ đệm mỗi lần tôi thay đổi tệp mẫu để nó hiển thị ở giao diện người dùng.

Vì vậy, các bước chính xác để vô hiệu hóa bộ nhớ đệm Twig trên bản cài đặt Drupal 8.0.1, không cài đặt mô-đun hoặc tùy chỉnh là gì?


Bạn đã kiểm tra cài đặt hiệu suất? Có bộ nhớ đệm được bật trong cài đặt của tôi theo mặc định ...
Volker

Cảm ơn @Volker, đó là nơi đầu tiên tôi đã kiểm tra - tính năng tổng hợp đã được bật nhưng bộ nhớ đệm đã bị tắt (agg hiện đã tắt và bộ nhớ cache đã được xây dựng lại)
Clive

1
Tôi không chắc chắn 100% nó sẽ giúp ích trong tình huống này, nhưng cũng đảm bảo APC hoặc OpCache cục bộ của bạn bị vô hiệu hóa hoặc được đặt để quét lại mỗi lần.
mpdon Arena

Thật kỳ lạ, điều này chắc chắn sẽ làm việc. Điều đầu tiên là tìm ra chính xác bộ đệm. Bạn đã đề cập đến thay đổi mẫu, nếu bạn thay đổi một cái gì đó trong hook _ * _ view () hoặc vị trí khác trong PHP vừa được lưu trong bộ nhớ cache, điều đó có được cập nhật không? Hãy thử bỏ các cài đặt thực tế trong thùng chứa đã biên dịch của bạn với drush ev "var_dump(\Drupal::getContainer()->getParameter('twig.config'))". Đảm bảo rằng thứ tự dịch vụ của bạn bao gồm chính xác.
Berdir

@Berdir Hóa ra là một thứ gì đó chờ đợi trong đường ống gây ra sự cố, các tài liệu được phát hiện
Clive

Câu trả lời:


1

Tự động tải lại phải là null, sau đó quá trình biên dịch twig được chuyển khi bạn bật gỡ lỗi.

auto_reload: null

Cách nhanh nhất để cho phép cành lá gỡ lỗi là để sao chép default.services.ymlđến services.ymlvà thiết lập debug: truecache: false

Bạn có thể kiểm tra điều này, nếu bạn nhìn vào các nhánh cây được sắp sẵn, khi bạn bật gỡ lỗi twig, thư mục này sẽ không còn nữa:

/sites/default/files/php/twig

Tôi muốn giữ các cài đặt phát triển của mình ở vị trí được đề xuất, Development.service.yml, được bao gồm bởi các trang web của tôi / default / local.sinstall.php (lần lượt được bao gồm trong cài đặt bình thường.php). Bạn đang nói rằng điều đó là không thể và tôi nên sử dụng tệp cài đặt sản xuất thay thế cho điều này? Thay đổi auto_reloadkhông tạo ra sự khác biệt đáng tiếc
Clive

Chỉ cần thử sao chép default.service.tml sang services.yml, thực hiện các thay đổi bạn đề xuất, xây dựng lại bộ đệm - không có gì khác biệt, vẫn phải xây dựng lại bộ đệm mỗi khi tôi thay đổi mẫu twig để nó hiển thị. Dù sao cũng cảm ơn
Clive

Tôi đã thực hiện điều này hàng chục lần, bật và tắt twig gỡ lỗi, không bao giờ có bất kỳ vấn đề nào, điều này rất lạ. Bạn có thấy các bình luận gỡ lỗi, khi xem nguồn trong trình duyệt không? (và xem câu trả lời để biết thêm thông tin)
4k4

Thật kỳ lạ @ 4k4 :) Tôi đã làm điều này trước đây và không gặp vấn đề gì, không biết tại sao nó đột nhiên bắt đầu trên trang web này. Chỉ trong một cuộc họp nhưng sẽ thử các đề xuất khác của bạn một lát sau
Clive

Vấn đề hóa ra là sự kết hợp của nhiều thứ trên máy cục bộ của tôi đang che giấu vấn đề thực sự. Xin lỗi vì đã lãng phí thời gian của bạn, cảm ơn lần nữa vì đã trả lời
Clive

0
  1. Sao chép và đổi tên các trang web / example.sinstall.local.php thành các trang web / default / settings.local.php

    $ cp sites/example.settings.local.php sites/default/settings.local.php
  2. Mở tệp settings.php trong trang web / mặc định và bỏ ghi chú những dòng này:

     if (file_exists(__DIR__ . '/settings.local.php')) {    
       include __DIR__ . '/settings.local.php';  
     }
    

    Điều này sẽ bao gồm tệp cài đặt cục bộ như một phần của tệp cài đặt của Drupal.

  3. Mở settings.local.php và thay đổi thành TRUE

    $config['system.performance']['css']['preprocess'] = FALSE;
    $config['system.performance']['js']['preprocess'] = FALSE;
    
  4. Bỏ ghi chú những dòng này là settings.local.php để Vô hiệu hóa bộ đệm kết xuất và Vô hiệu hóa Bộ đệm ẩn Trang động

    $settings['cache']['bins']['render'] = 'cache.backend.null';
    $settings['cache']['bins']['dynamic_page_cache'] = 'cache.backend.null'; 
    

    Nếu bạn không muốn cài đặt các mô-đun và chủ đề thử nghiệm, hãy đặt theo FALSE

    $settings['extension_discovery_scan_tests'] = TRUE;
  5. Mở Development.service.yml trong thư mục trang web và thêm khối sau (để tắt twig cache)

    parameters:   
      twig.config:
        debug : true
        auto_reload: true
        cache: false
    

Sau khi hoàn thành các bước này, thêm hai dòng này trong settings.php của bạn và xóa bộ đệm.

$ settings ['container_yamls'] [] = DRUPAL_ROOT. '/sites/development.service.yml';

$ settings ['container_yamls'] [] = DRUPAL_ROOT. '/sites/development.service.yml';

Nó làm việc cho đồng nghiệp của tôi. Hi vọng nó sẽ giúp ích cho bạn.


Cảm ơn, tôi cũng đã thử nhưng không có gì khác biệt - vẫn cần xóa bộ nhớ cache mỗi khi tôi thay đổi bất cứ điều gì trong page.html.twig
Clive

Vấn đề hóa ra là sự kết hợp của nhiều thứ trên máy cục bộ của tôi đang che giấu vấn đề thực sự. Xin lỗi vì đã lãng phí thời gian của bạn, cảm ơn lần nữa vì đã trả lời
Clive
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.