2011-11-25 21 views
6

Tiện ích mở rộng tệp nào được Bộ nhớ cache đáng tin cậy lưu vào bộ nhớ cache? CFM và CFC là những cái rõ ràng, nhưng về CFR thì sao? Có các phần mở rộng tệp khác bị Bộ nhớ cache đáng tin cậy bắt giữ không?Tiện ích mở rộng tệp nào bị ảnh hưởng bởi Trusted Cache

Một số nơi tôi biết/nghi ngờ rằng các tập tin vào mẫu bộ nhớ cache là:

  • quy định trực tiếp trong url (cfm, cfml, cfc, nhiều hơn?)
  • cfinclude (bất kỳ phần mở rộng tập tin được sử dụng trong một cfinclude ví dụ <cfinclude template="./some.css">)
  • cfmodule (cfm, nhiều hơn?)
  • cfimport (cfm, cũng jartld?)
  • cfobject, CreateObject (cfc, cũng .net, com, dịch vụ java, và web?)
  • cfreport (cfr có thể được tuân thủ tiện ích cfcompile?)

Có thẻ khác sẽ có tác dụng tương tự khi thêm nội dung vào bộ đệm mẫu?

Trả lời

0

Rất tiếc, không có nguồn chính thức cho thông tin này. Tuy nhiên, có thể, với rất nhiều công việc, để kiểm tra mỗi và mọi thẻ để xem liệu các tệp có kết thúc trong Bộ đệm ẩn đáng tin cậy hay không.

Hai điểm đầu tiên của bạn được bao phủ lần lượt là Shawn Holmes' answerSean Corfield's answer.

Dấu đầu dòng 3: cfmodule được giới hạn ở các tệp cfm, do đó tiện ích mở rộng là phần duy nhất bạn phải lo lắng.

Đạn 6: cfreport không được nhập bộ đệm mẫu vì nó chuyển đổi tệp, không biên dịch tệp để thực thi.

5

Theo mặc định, ColdFusion vận chuyển với các tiện ích * .cfm, * .cfc và * .cfml được ánh xạ trong JRun dưới dạng tiện ích được tin cậy. Bạn có thể xem các ánh xạ này bằng cách mở tệp cấu hình j2ee-web.xml và web.xml trong \ JRun4 \ servers \ cfusion \ cfusion-ear \ cfusion-war \ WEB-INF \ (hoặc gần đây, dựa trên cài đặt của bạn) :

<servlet-mapping id="coldfusion_mapping_3"> 
    <servlet-name>CfmServlet</servlet-name> 
    <url-pattern>*.cfm</url-pattern> 
</servlet-mapping> 
<servlet-mapping id="coldfusion_mapping_4"> 
    <servlet-name>CFCServlet</servlet-name> 
    <url-pattern>*.cfc</url-pattern> 
</servlet-mapping> 
<servlet-mapping id="coldfusion_mapping_5"> 
    <servlet-name>CfmServlet</servlet-name> 
    <url-pattern>*.cfml</url-pattern> 
</servlet-mapping> 

Tuy nhiên, bạn cũng có thể tự cấu hình ánh xạ hoàn toàn mới ở đây là tốt, mà sẽ cho phép ColdFusion để phân tích/biên dịch thẻ CFML trong các tập tin có phần mở rộng khác nhau cũng như (tôi đã làm việc với máy chủ CF mà đã được định cấu hình để phân tích cú pháp .shtml, ví dụ)

Lưu ý: Bạn cũng sẽ phải thực hiện thêm một số cấu hình cho máy chủ web của mình, có thể là Apache, IIS hoặc bất kỳ thứ gì.

Khi CF được định cấu hình để xử lý tệp của một tiện ích mở rộng cụ thể, nó được thêm vào danh sách tệp được xử lý trong Bộ nhớ cache đáng tin cậy - vì tệp đó cuối cùng tương đương với tệp .class được biên dịch bên dưới .

+0

Tôi đã thêm một trường hợp khác mà tôi đã phát hiện khi nội dung có thể truy cập vào bộ đệm mẫu. Bạn có hiểu biết sâu hơn không? – nosilleg

+0

Đã thêm làm rõ. –

+0

Liên kết bạn cung cấp là một ví dụ về đối tượng cấp ứng dụng được lưu trong bộ nhớ cache, trong khi tiếp tục tự động thực hiện phần thân của phương thức/giả tạo của nó, mà lần lượt, là một CFINCLUDE. Điều này tương tự với * Tình huống B * của tôi ở trên. Đối tượng và phương thức được lưu trữ, nhưng phương thức tạo ra khi được gọi là không. Điều này không ảnh hưởng đến Trusted Cache, mà là một quá trình hoàn toàn riêng biệt mà CF sử dụng để kiểm tra/bỏ qua các khuôn mẫu CF để sửa đổi/biên dịch lại. –

7

Adobe ColdFusion (và Railo) biên dịch các mẫu CFML thành JVM bytecode và, nếu được cấu hình để làm như vậy, sẽ ghi các lớp đã biên dịch vào đĩa dưới dạng tệp .class. Bộ nhớ cache mẫu là một cơ chế để nói: nếu lớp đích đã được nạp, đừng bận tâm xem tệp (nguồn) trên đĩa để xem nó có cần biên dịch lại hay không - hãy tin vào những gì trong bộ nhớ.

Các cải tiến gần đây đối với ACF và Railo cho phép bạn chỉ định rằng (nguồn) tệp có thể được kiểm tra luôn (không tin cậy), một lần cho mỗi yêu cầu, không bao giờ (luôn được tin cậy).

Đó không phải là tin tức cho bất kỳ ai.

Rõ ràng ACF và Railo sẽ biên dịch bất kỳ tệp .cfm hoặc .cfc nào mà chúng được yêu cầu xử lý để chúng sẽ "kết thúc" trong bộ nhớ cache đáng tin cậy nếu được bật.

Nếu bạn cfinclude một tập tin - bất kỳ tập tin - ACF và Railo cũng sẽ biên dịch đó để bytecode JVM (và tạo một tập tin .class trên đĩa nếu cấu hình để làm như vậy). Vì một tệp được bao gồm được biên dịch, nó cũng sẽ "kết thúc" trong bộ đệm đáng tin cậy.Điều gì sẽ xảy ra nếu bạn bao gồm một tệp CSS sau đó? Nó được biên dịch sang bytecode để xuất ra toàn bộ nội dung của tệp CSS dưới dạng một chuỗi cho luồng phản hồi. Vì nó là một lớp được biên dịch, bây giờ xuất ra một chuỗi mã cứng, nếu bạn thay đổi tệp nguồn CSS và đã bật bộ đệm tin cậy, ACF và Railo sẽ tin tưởng những gì trong trình nạp lớp và không biên dịch lại nó (giả sử "kiểm tra" không bao giờ là quản trị viên cài đặt).

Bạn có thể xác minh điều này bằng cách xóa thư mục cfclasses, khởi động lại công cụ CFML và chạy mã của bạn. Bạn sẽ thấy một tệp .class xuất hiện cho tệp CSS của bạn (giả sử bạn đã lưu tệp lớp vào đĩa đã bật).

Vì vậy, cfinclude buộc biên soạn tệp "bất kỳ" và quy tắc bộ nhớ cache đáng tin cậy áp dụng cho các lớp được tải vào bộ nhớ.

Tôi không còn sử dụng ACF nữa nên tôi không thể nói chi tiết cho tệp .cfr (Railo không hỗ trợ tệp báo cáo) nhưng có nhiều khả năng phụ thuộc vào việc ACF có biên dịch tệp .cfr hay không. Cần dễ dàng xác minh (bằng cách tìm trong thư mục cfclasses).

+0

Cảm ơn bạn! +1 cho liên kết còn thiếu, tôi đã xóa câu trả lời của mình. –

+0

Tất cả đều có ý nghĩa và tương quan với dữ liệu được tìm thấy ở nơi khác trên web, những gì tôi không thể tìm thấy là chi tiết về những gì có thể truy cập vào bộ nhớ cache mẫu và cách thực hiện. Một số lĩnh vực khác mà tôi biết/nghi ngờ mẫu nhập từ là: tải trực tiếp từ máy chủ web theo câu trả lời gốc @ShawnHolmes, cfinclude, cfmodule, cfimport ('jar' và 'tld' cũng như 'cfm's?), Cfobject ('cfc', nhưng .net, com, java và các dịch vụ web?), createobject, cfreport (' cfr' có thể được tuân thủ với tiện ích cfcompile), những thứ khác? Ngoài ra, tôi không nghĩ rằng ACF luôn viết các tệp .class. Ran kiểm tra và chỉ có một .class thay vì 4. – nosilleg

+0

@ShawnHolmes Xấu hổ bạn loại bỏ phần gốc của câu trả lời của bạn, tôi nghĩ rằng đó là một phần rất có giá trị của câu trả lời cho câu hỏi này. – nosilleg

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