2012-09-01 35 views
11

Tôi đang cố gắng tối ưu hóa dự án của mình để tránh gửi cookie bằng tài nguyên tĩnh (ví dụ: hình ảnh, tập lệnh, bảng định kiểu, v.v.). Cách tiếp cận của tôi là tạo miền tĩnh.my-domain.com để phân phối từ đó tất cả tài nguyên tĩnh mà không có cookie.Tài nguyên nội dung của Symfony2 từ miền tĩnh hoặc tên miền phụ

Làm cách nào để tải tài nguyên từ miền này bằng Symfony2 bằng nội dung?

Tôi đang sử dụng Symfony 2.1 RC2

Trả lời

4

Hóa ra có một assets_base_urls tùy chọn cho phép bạn thiết lập tài sản lĩnh vực.

+0

và phải làm gì với hình ảnh? – unairoldan

+0

@ Ztere0 câu trả lời trước của tôi là hoàn toàn sai. – meze

+0

Hình ảnh là tài sản, tải chúng bằng hàm asset() –

1

tôi đã thêm một số globals cành lá để đối phó với điều này

# config.yml 
framework: 
    templating: 
     engines: ['twig'] 
     assets_version: 'dev' 
     assets_version_format: "%%2$s/%%1$s" 
    session: 
     cookie_domain:  %session.cookie_domain% 
twig: 
    globals: 
     assets_version: dev 
     static_assets_base_url: %static_assets_base_url% 
     static_images_base_url: %static_images_base_url% 
     static_image: %static_images_base_url%/dev/ # I didn't know how to reference the assets_version, so this is the same value 
     static_content: %static_images_base_url%/ 

# parameters.yml 
parameters: 
    session.cookie_domain: .myapp.dev 
    static_assets_base_url: http://myapp-static.dev 
    static_images_base_url: http://myapp-static.dev/path/to/web 
  • Đối với css phiên bản và biên soạn/js vv Tôi in {{ static_assets_base_url ~ asset_url }}.
  • Đối với hình ảnh được phiên bản, v.v, tôi in {{ static_image ~ 'bundles/mybundle/img/icon.jpg' }}.
  • Đối với hình ảnh không được phiên bản, v.v., tôi in {{ static_content ~ 'content/img/upload-123.jpg' }}.

Tôi không nhớ chính xác lý do tại sao tôi đã làm điều này, nhưng nó liên quan đến lỗi xác thực (thật ngạc nhiên). Nó chỉ không thể xử lý đường dẫn một cách chính xác, như đôi khi nó không thêm phiên bản, hoặc nó làm sai.

Sẽ là một nỗi đau nếu bạn phải sửa đổi phiên bản nội dung theo cách thủ công, vì vậy, bạn nên có sẵn một tập lệnh triển khai để thực hiện việc này.

Oh và nhớ rằng Assetic sẽ không đổ các tài sản đã biên dịch vào các thư mục được chỉ định, đây là một vấn đề đã biết. Vì vậy, bạn phải thêm các liên kết của riêng bạn cho các thư mục này.

EDIT

Tham số 'session.cookie_domain' cho phép bạn sử dụng cùng một tên miền và tránh cookie, nếu ứng dụng của bạn trong một tên miền phụ. Nếu ứng dụng của bạn không sử dụng tên miền phụ, bạn sẽ phải sử dụng tên miền riêng cho các nội dung tĩnh.

Các vấn đề liên quan