|
|
| |
Caching Concepts Interview Questions |
|
| |
|
| |
|
| |
What is application object ? |
| |
Application object can used in situation where we want data to be shared across users
globally. |
| |
|
| |
What’s the difference between Cache object and application object ? |
| |
The main difference between the Cache and Application objects is that the Cache object
provides cache-specific features, such as dependencies and expiration policies. |
| |
|
| |
How can get access to cache object ? |
| |
The Cache object is defined in the System.Web.Caching namespace. You can get a reference
to the Cache object by using the Cache property of the HttpContext class in the
System.Web namespace or by using the Cache property of the Page object. |
| |
|
| |
What are dependencies in cache and types of dependencies ? |
| |
When you add an item to the cache, you can define dependency relationships that can
force that item to be removed from the cache under specific activities of
dependencies.Example if the cache object is dependent on file and when the file data
changes you want the cache object to be update.Following are the supported dependency |
| |
File dependency :- Allows you to invalidate a specific cache item when a disk
based file or files change. |
| |
Time-based expiration :- Allows you to invalidate a specific cache item
depending on predefined time. |
| |
Key dependency :-Allows you to invalidate a specific cache item depending
when another cached item changes. |
| |
|
| |
Can you show a simple code showing file dependency in cache ? |
| |
Partial Class Default_aspx
Public Sub displayAnnouncement()
Dim announcement As String
If Cache(“announcement”) Is Nothing Then
Dim file As New _
System.IO.StreamReader _
(Server.MapPath(“announcement.txt”))
announcement = file.ReadToEnd
file.Close()
Dim depends As New _
System.Web.Caching.CacheDependency _
(Server.MapPath(“announcement.txt”))
Cache.Insert(“announcement”, announcement, depends)
End If
Response.Write(CType(Cache(“announcement”), String))
End Sub
Private Sub Page_Init(ByVal sender As Object, ByVal e As
System.EventArgs) Handles Me.Init
displayAnnouncement()
End Sub
End Class |
| |
Above given method displayAnnouncement() displays banner text from Announcement.txt
file which is lying in application path of the web directory.Above method first checks is
the Cache object nothing , if the cache object is nothing then it moves further to load the
cache data from the file.Whenever the file data changes the cache object is removed and
set to nothing. |
| |
|
| |
What is Cache Callback in Cache ? |
| |
Cache object is dependent on its dependencies example file based , time based etc.Cache
items remove the object when cache dependencies change.ASP.NET provides capability
to execute a callback method when that item is removed from cache. |
| |
|
|
| |
What is scavenging ? |
|
| |
When server running your ASP.NET application runs low on memory resources , items
are removed from cache depending on cache item priority.cache item priority is set when
you add item to cache.BY setting the cache item priority controls which items scavenging
is removed first. |
|
| |
|
|
| |
What are different types of caching using cache object of ASP.NET? |
|
| |
You can use two types of output caching to cache information that is to be transmitted to
and displayed in a Web browser: |
|
| |
Page Output Caching |
|
| |
Page output caching adds the response of page to cache object.Later when
page is requested page is displayed from cache rather than creating the
page object and displaying it.Page output caching is good if the site is
fairly static. |
|
| |
Page Fragment Caching |
|
| |
If parts of the page are changing, you can wrap the static sections as user
controls and cache the user controls using pagefragment caching. |
|
| |
|
|
| |
How can you cache different version of same page using ASP.NET
cache object ? |
|
| |
Output cache functionality is achieved by using “OutputCache” attribute on ASP.NET
page header.Below is the syntax |
|
| |
<%@ OutputCache Duration="20" Location="Server" VaryByParam="state"
VaryByCustom="minorversion" VaryByHeader="Accept-Language"%> |
|
| |
VaryByParam :- Caches different version depending on input parameters send
through HTTP POST/GET. |
|
| |
VaryByHeader:- Caches different version depending on the contents of the
page header. |
|
| |
VaryByCustom:-Lets you customize the way the cache handles page variations
by declaring the attribute and overriding the Get VaryByCustomString handler. |
|
| |
VaryByControl:-Caches different versions of a user control based on
the value of properties of ASP objects in the control. |
|
| |
|
|
| |
How will implement Page Fragment Caching ? |
|
| |
Page fragment caching involves the caching of a fragment of the page, rather than the
entire page. When portions of the page need to be dynamically created for each user
request this is best method as compared to page caching.You can wrap Web Forms user
control and cache the control so that these portions of the page don’t need to be recreated
each time. |
|
| |
|
|
| |
What are ASP.NET session and compare ASP.NET session with
classic ASP session variables? |
|
| |
ASP.NET session caches per user session state.It basically uses “HttpSessionState” class. |
|
| |
Following are the limitations in classic ASP sessions :- |
|
| |
ASP session state is dependent on IIS process very heavily.So if IIS restarts
ASP session variables are also recycled.ASP.NET session can be independent
of the hosting environment thus ASP.NET session can maintained even if IIS
reboots. |
|
| |
ASP session state has no inherent solution to work with Web Farms.ASP.NET
session can be stored in state server and SQL SERVER which can support
multiple server. |
|
| |
ASP session only functions when browser supports cookies .ASP.NET session
can be used with browser side cookies or independent of it. |
|
| |
|
|
| |
Which various modes of storing ASP.NET session ? |
|
| |
InProc:- In this mode Session state is stored in the memory space of the
Aspnet_wp.exe process.This is the default setting.If the IIS reboots or web
application restarts then session state is lost. |
|
| |
StateServer:-In this mode Session state is serialized and stored in a separate
process (Aspnet_state.exe); therefore, the state can be stored on a separate
computer(a state server). |
|
| |
SQL SERVER:- In this mode Session state is serialized and stored in a SQL
Server database. |
|
| |
Session state can be specified in <sessionState> element of application configuration
file.Using State Server and SQL SERVER session state can be shared across web farms
but note this comes at speed cost as ASP.NET needs to serialize and deserialize data over
network again and again. |
|
| |
|
|
| |
Is Session_End event supported in all session modes ? |
|
| |
Session_End event occurs only in “Inproc mode”.”State Server” and “SQL SERVER”
do not have Session_End event. |
|
| |
|
|
| |
What are the precautions you will take in order that StateServer Mode
work properly ? |
|
| |
Following are the things to remember so that StateServer Mode works properly :- |
|
| |
StateServer mode session data is stored in a different process so you must
ensure that your objects are serializable. |
|
| |
<machineKey> elements in Web.config should be indentical across all
servers.So this ensures that encryption format is same across all computers. |
|
| |
IIS metabase (\LM\W3SVC\2) must be identical across all servers in that
farm. |
|
| |
|
|
| |
What are the precautions you will take in order that SQLSERVER
Mode work properly ? |
|
| |
Following are the things to remember so that SQLSERVER Mode works properly :- |
|
| |
SQLSERVER mode session data is stored in a different process so you must
ensure that your objects are serializable. |
|
| |
IIS metabase (\LM\W3SVC\2) must be indentical across all servers in that
farm. |
|
| |
By default Session objects are stored in “Tempdb” , you can configure it store
outside “TempDB” by running microsoft provided SQL script. |
|
| |
Note :- “TempDB” database is re-created after SQL SERVER computer reboot.If you
want to maintain session state with every reboot best is to run SQL Script and store session
objects outside “TempDB” database. |
|
| |
|
|
| |
Where do you specify session state mode in ASP.NET ? |
|
| |
<sessionState mode=”SQLServer”
stateConnectionString=”tcpip=192.168.1.1:42424"
sqlConnectionString=”data source=192.168.1.1; Integrated
Security=SSPI”
cookieless=”false”
timeout=”20"
/> |
|
| |
Above is sample session state mode specified for SQL SERVER. |
|
| |
|
|
| |
What are the other ways you can maintain state ? |
|
| |
Other than session variables you can use the following technique to store state : |
|
| |
Hidden fields |
|
| |
View state |
|
| |
Hidden frames |
|
| |
Cookies |
|
| |
Query strings |
|
| |
|
|
| |
What are benefits and Limitation of using Hidden fields ? |
|
| |
Following are the benefits of using Hidden fields :- |
|
| |
They are simple to implement. |
|
| |
As data is cached on client side they work with Web Farms. |
|
| |
All browsers support hidden field. |
|
| |
No server resources are required. |
|
| |
Following are limitations of Hidden field :- |
|
| |
They can be tampered creating a security hole. |
|
| |
Page performance decreases if you store large data , as the data is stored in
pages itself. |
|
| |
Hidden fields do not support rich structures as HTML hidden fields are only
single valued.Then you have to work around with delimiters etc to handle
complex structures. |
|
| |
Below is how you will actually implement hidden field in a project |
|
| |
<input id="HiddenValue" type="hidden" value="Initial Value"
runat="server"NAME="HiddenValue"> |
|
| |
|
|
| |
What is ViewState ? |
|
| |
Viewstate is a built-in structure for automatically retaining values among multiple requests
for the same page. The view state is internally maintained as a hidden field on the page
but is hashed, providing greater security than developer-implemented hidden fields do. |
|
| |
|
|
| |
Do performance vary for viewstate according to User controls ? |
|
| |
Performance of view state varies depending on the type of server control to which it is
applied. Label, TextBox, CheckBox, RadioButton, and HyperLink are server controls
that perform well with ViewState. DropDownList, ListBox, DataGrid, and DataList suffer
from poor performance because of their size and the large amounts of data making
roundtrips to the server. |
|
| |
|
|
| |
What are benefits and Limitation of using Viewstate for state
management? |
|
| |
Following are the benefits of using Viewstate :- |
|
| |
No server resources are required because state is contained in a structure in
the page code. |
|
| |
Simplicity. |
|
| |
States are retained automatically. |
|
| |
The values in view state are hashed, compressed, and encoded, thus representing
a higher state of security than hidden fields. |
|
| |
View state is good for caching data in Web farm configurations because the
data is cached on the client. |
|
| |
Following are limitation of using Viewstate:- |
|
| |
Page loading and posting performance decreases when large values are
stored because view state is stored in the page. |
|
| |
Although view state stores data in a hashed format, it can still be tampered
with because it is stored in a hidden field on the page. The information in the
hidden field can also be seen if the page output source is viewed directly,
creating a potential security risk. |
|
| |
Below is sample of storing values in view state. |
|
| |
this.ViewState["EnterTime"] = DateTime.Now.ToString(); |
|
| |
|
|
| |
How an you use Hidden frames to cache client data ? |
|
| |
This technique is implemented by creating a Hidden frame in page which will contain
your data to be cached. |
|
| |
<FRAMESET cols="100%,*,*">
<FRAMESET rows="100%">
<FRAME src="data_of_frame1.html"></FRAMESET>
<FRAME src="data_of_hidden_frame.html">
<FRAME src="data_of_hidden_frame.html" frameborder="0" noresize
scrolling="yes">
</FRAMESET> |
|
| |
Above is a sample of hidden frames where the first frame “data_of_frame1.html” is visible
and the remaining frames are hidden by giving whole col section to first frame. See allocation
where 100 % is allocated to first frame and remaining frames thus remain hidden. |
|
| |
|
|
| |
What are benefits and Limitation of using Hidden frames? |
|
| |
Following are the benefits of using hidden frames: |
|
| |
You can cache more than one data field. |
|
| |
The ability to cache and access data items stored in different hidden forms. |
|
| |
The ability to access JScript® variable values stored in different frames if they
come from the same site. |
|
| |
The limitations of using hidden frames are: |
|
| |
Hidden frames are not supported on all browsers. |
|
| |
Hidden frames data and be tampered thus creating security hole. |
|
| |
|
|
| |
What are benefits and Limitation of using Cookies? |
|
| |
Following are benefits of using cookies for state management :- |
|
| |
No server resources are required as they are stored in client. |
|
| |
They are light weight and simple to use |
|
| |
Following are limitation of using cookies :- |
|
| |
Most browsers place a 4096-byte limit on the size of a cookie,although support
for 8192-byte cookies is becoming more common in the new browser and
client-device versions available today. |
|
| |
Some users disable their browser or client device’s ability to receive cookies,
thereby limiting the use of cookies. |
|
| |
Cookies can be tampered and thus creating a security hole. |
|
| |
Cookies can expire thus leading to inconsistency. |
|
| |
Below is sample code of implementing cookies |
|
| |
Request.Cookies.Add(New HttpCookie(“name”, “user1”)) |
|
| |
|
|
| |
What is Query String and What are benefits and Limitation of using
Query Strings? |
|
| |
A query string is information sent to the server appended to the end of a page URL. |
|
| |
Following are the benefits of using query string for state management:- |
|
| |
No server resources are required. The query string is contained in the HTTP
request for a specific URL. |
|
| |
All browsers support query strings. |
|
| |
Following are limitations of query string :- |
|
| |
Query string data is directly visible to user thus leading to security problems.- |
|
| |
Most browsers and client devices impose a 255-character limit on URL length. |
|
| |
Below is a sample “Login” query string passed in URL http://www.querystring.com/
login.asp?login=testing.This querystring data can then be requested later by using
Request.QueryString(“login”). |
|
| |
|
|
| |
|
|
| |
|
|