Điểm:1

Người dùng sai với currentUser() trên prod

lá cờ kn

Tôi nhận được tên của người dùng mà tôi tải từ hồ sơ. Nó hoạt động tốt trên địa phương của tôi, nhưng trên sản phẩm của tôi, tên được hiển thị đang hiển thị tên từ người dùng trước. Làm thế nào để tôi ngăn chặn điều đó? Đây là cách tôi lấy dữ liệu của mình.

Đây là chỗ tôi không hiểu, tôi đang tải dữ liệu theo người dùng hiện tại, nhưng người dùng đó không phải là người tốt...

Tôi chỉ có tên "mới" sau khi xóa bộ nhớ cache của trang web bằng drush

/**
 * Triển khai hook_pre process_HOOK().
 */
hàm frr_menu_link_pre process_menu__account(&$variables)
{
    $current_user = \Drupal::currentUser();
    $variables['firstname'] = FALSE;
    if($current_user->isAuthenticated()) {
        $entity_manager = \Drupal::entityTypeManager();
        $profileStorage = $entity_manager->getStorage('profile');
        $profileCustomerFound = $profileStorage->loadByProperties([
            'uid' => $current_user->id(),
            'loại' => 'khách hàng',
            'is_default' => 1,
            'trạng thái' => 1,
        ]);
        if($profileCustomerFound > 0) {
            $customer = end($profileCustomerFound);
            $firstname = $customer->get('field_firstname')->value;
            $variables['firstname'] = !empty($firstname) ? ucfirst($firstname) : SAI;
        }
    }
}
lá cờ id
Bạn có ý nghĩa gì bởi người dùng "trước"?
Điểm:3
lá cờ id

Điều này có thể là do bạn phải thêm siêu dữ liệu khả năng lưu vào bộ nhớ đệm vì vậy Drupal biết lưu trữ nội dung riêng biệt theo người dùng.

lá cờ cn
Đề cập bắt buộc - thay đổi bộ đệm cho mỗi người dùng không phải là một ý tưởng hay vì số lượng mục nhập bộ đệm có thể lớn. Trình tạo lười biếng và trình giữ chỗ có thể được sử dụng trong loại tình huống này. Có một bài viết hay với các ví dụ tại đây: https://www.qed42.com/insights/coe/drupal/lazy-builders-drupal-8-caching-ftw và nếu bạn tìm kiếm trang web này cho [lazy_builder](https:/ /drupal.stackexchange.com/search?q=lazy_builder) có rất nhiều ví dụ và giải thích khác
lá cờ kn
Trang web của tôi hiện có khoảng 160000 người dùng, với số lượng người dùng "nhà phát triển" thì tôi không gặp vấn đề gì... Vậy tôi có thể thêm siêu dữ liệu lưu vào bộ nhớ cache không?
lá cờ kn
Nếu vậy, làm thế nào để tôi làm điều này?
4uk4 avatar
lá cờ cn
Nếu bạn có số lượng người dùng này thì hãy thêm `$variables['#cache'] = ['max-age' => 0];` để ngăn trình đơn được lưu vào bộ đệm cho mọi người dùng truy cập trang. Trong trường hợp này, trình tạo lười biếng là không thực sự cần thiết vì các menu thường được hiển thị theo khối và các khối đã có sẵn trình tạo lười biếng.
4uk4 avatar
lá cờ cn
Mặc dù một trình tạo lười biếng riêng biệt chỉ dành cho $variables['firstname'] sẽ rất tuyệt. Điều này làm cho trang tải trôi chảy hơn khi các phần động bị hạn chế ở mức tối thiểu tuyệt đối. Xem https://drupal.stackexchange.com/questions/305479/can-bigpipe-exclude-certain-blocks
lá cờ kn
`$variables['#cache'] = ['max-age' => 0];` hoạt động tốt, cảm ơn !

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.